const fr = Ws;
function Zr() {
  const s = ["len", "468334VcUWFD", "95709llzXfP", "7958484UQMQQH", "7100286zQzXbI", "4333704qXlqaQ", "1138697zWGLjB", "8BSXWzc", "cross", "sqrt", "16sfmDjC", "normalize", "713905MFQpjW"];
  return (Zr = function() {
    return s;
  })();
}
function Ws(s, t) {
  const e = Zr();
  return (Ws = function(n, r) {
    return e[n -= 485];
  })(s, t);
}
function Oa(s, t, e) {
  return s[0] = t[0] * e, s[1] = t[1] * e, s;
}
function Ta(s, t) {
  return s[0] * t[0] + s[1] * t[1];
}
(function() {
  const s = Ws, t = Zr();
  for (; ; )
    try {
      if (-parseInt(s(495)) / 1 + parseInt(s(488)) / 2 * (parseInt(s(496)) / 3) + parseInt(s(486)) / 4 + -parseInt(s(493)) / 5 + -parseInt(s(485)) / 6 + parseInt(s(487)) / 7 * (parseInt(s(491)) / 8) + parseInt(s(497)) / 9 === 626160)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class B {
}
B.multiplyC = Oa, B.scale = function(s, t, e) {
  return s[0] = t[0] * e, s[1] = t[1] * e, s;
}, B[fr(494)] = function(s) {
  return Math[Ws(490)](s[0] * s[0] + s[1] * s[1]);
}, B.negate = function(s, t) {
  return s[0] = -t[0], s[1] = -t[1], s;
}, B.add = function(s, t, e) {
  return s[0] = t[0] + e[0], s[1] = t[1] + e[1], s;
}, B[fr(492)] = function(s, t) {
  if (t[0] == 0 && t[1] == 0)
    return s[0] = 0, s[1] = 0, s;
  let e = Math.sqrt(t[0] * t[0] + t[1] * t[1]);
  return e == 0 ? (s[0] = 0, s[0] = 0, s) : (s[0] = t[0] / e, s[1] = t[1] / e, s);
}, B.dot = Ta, B.projection = function(s, t, e) {
  return Oa(s, e, Ta(t, e)), s;
}, B[fr(489)] = function(s, t) {
  return s[0] * t[1] - s[1] * t[0];
};
const J = $r;
(function() {
  const s = $r, t = ei();
  for (; ; )
    try {
      if (parseInt(s(423)) / 1 + -parseInt(s(444)) / 2 + -parseInt(s(429)) / 3 * (-parseInt(s(448)) / 4) + parseInt(s(453)) / 5 * (-parseInt(s(427)) / 6) + -parseInt(s(435)) / 7 + parseInt(s(436)) / 8 * (parseInt(s(445)) / 9) + parseInt(s(443)) / 10 * (parseInt(s(447)) / 11) === 431690)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const Rs = "2.6.18_试用版", Ht = Object[J(449)]({ drag: "drag", edit: "edit", normal: J(438), select: "select", view: "view", paint: "paint" }), at = Object[J(449)]({ grabbing: "grabbing", default: J(431), grab: J(441), auto: J(424), move: "move", hand: J(432), crosshair: "crosshair", s_resize: "s-resize", n_resize: "n-resize", w_resize: "w-resize", e_resize: "e-resize", ne_resize: "ne-resize", se_resize: "se-resize", sw_resize: "sw-resize", nw_resize: "nw-resize" }), Dt = Object.freeze({ horizontal: J(452), vertical: J(446), h: "h", v: "v", anticlockwise: J(425), clockwise: "clockwise" }), ne = Object[J(449)]({ lt: "lt", ct: "ct", rt: "rt", lm: "lm", rm: "rm", lb: "lb", cb: "cb", rb: "rb", center: J(426) });
function $r(s, t) {
  const e = ei();
  return ($r = function(n, r) {
    return e[n -= 423];
  })(s, t);
}
const Bt = ne, Kt = Object.freeze({ lt: "lt", ct: "ct", rt: "rt", lm: "lm", rm: "rm", lb: "lb", cb: "cb", rb: "rb", center: "center", auto: "auto" }), Ds = { lt: [-1, -1], ct: [0, -1], rt: [1, -1], rm: [1, 0], rb: [1, 1], cb: [0, 1], lb: [-1, 1], lm: [-1, 0], center: [0, 0] }, ti = {};
for (let s in Ds) {
  let t = Ds[s];
  ti[s] = B.normalize([], t);
}
function ei() {
  const s = ["1703882Ofdike", "900IXpMqH", "vertical", "22XYHWOS", "188828AqYXzt", "freeze", "AutoFoldLink", "middle", "horizontal", "3747145HBdlmG", "338805tMSENX", "auto", "anticlockwise", "center", "6hQfTww", "ArcLink", "42sQXhtR", "BezierLink", "default", "hand", "bottom", "end", "2275147zKEWXj", "43760vqpsRK", "ctrlPoint1", "normal", "QuadBezierLink", "fold2Offset", "grab", "ctrlPoint2", "4056890FmtfcA"];
  return (ei = function() {
    return s;
  })();
}
const Ot = Object[J(449)]({ left: "left", center: "center", right: "right" }), Tt = Object.freeze({ top: "top", middle: "middle", bottom: J(433) }), q = Object[J(449)]({ begin: "begin", end: J(434), middle: J(451), ctrlPoint: "ctrlPoint", ctrlPoint1: J(437), ctrlPoint2: J(442), fold1: "fold1", fold2: "fold2", mid: "mid", mid1: "mid1", mid2: "mid2" }), kt = Object.freeze({ QuadBezierLink: J(439), BezierLink: J(430), AutoFoldLink: J(450), ArcLink: J(428), fold1Offset: "fold1Offset", fold2Offset: J(440), centerOffset: "centerOffset" }), tt = Object.freeze({ AutoFoldLinkCenter: "com.jtopo.AutoFoldLink.center", AutoFoldLinkFold1: "fold1", AutoFoldLinkFold2: "fold2", LinkCenter: "center", LinkBegin: "begin", LinkEnd: "end", QuadBezierLinkCtrlPoint: "ctrlPoint", BezierLinkCtrlPoint1: "ctrlPoint1", BezierLinkCtrlPoint2: "ctrlPoint2", QuadBezierLinkCenter: "com.jtopo.QuadBezierLink.center", BezierLinkCenter: "com.jtopo.BezierLink.center", ArcLinkCenter: "com.jtopo.ArcLink.center" }), Dh = Object.freeze({ AutoFoldLinkAnchors: "com.jtopo.AutoFoldLinkAnchors" }), Nh = [0, 0];
function ni() {
  const s = ["pointerenter", "21VhwKzj", "freeze", "1202490LDKRzp", "60832gvFWAV", "indexOf", "unselected", "touchmove", "28KpZfxY", "defineProperty", "prototype", "178632Ckjuke", "15BoWRYg", "456066OIUuJm", "15835UuhUtf", "102282svQeoI", "includes", "137179vgncgq", "dropover"];
  return (ni = function() {
    return s;
  })();
}
const le = si;
function p(s) {
  return (t, e) => {
    t[e] = s;
  };
}
function si(s, t) {
  const e = ni();
  return (si = function(n, r) {
    return e[n -= 276];
  })(s, t);
}
(function() {
  const s = si, t = ni();
  for (; ; )
    try {
      if (-parseInt(s(294)) / 1 + -parseInt(s(292)) / 2 * (-parseInt(s(289)) / 3) + -parseInt(s(285)) / 4 * (parseInt(s(291)) / 5) + -parseInt(s(290)) / 6 + parseInt(s(278)) / 7 * (-parseInt(s(281)) / 8) + parseInt(s(288)) / 9 + parseInt(s(280)) / 10 === 137631)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})(), !Array.prototype.includes && Object[le(286)](Array[le(287)], le(293), { value: function(s) {
  return this[le(282)](s) != -1;
} });
const K = Object.freeze({ Dev_mode: Rs.startsWith("#"), MinDeep: 1, MaxLayerCount: 20, DefaultPackage: "com.jtopo", EventInstances: { touchmoveEvent: new InputEvent(le(284)), pointerdownEvent: new InputEvent("pointerdown"), pointerupEvent: new InputEvent("pointerup"), pointermoveEvent: new InputEvent("pointermove"), pointerenterEvent: new InputEvent(le(277)), pointeroutEvent: new InputEvent("pointerout"), clickEvent: new InputEvent("click"), dblclickEvent: new InputEvent("dblclick"), dragEvent: new InputEvent("drag"), dragEndEvent: new InputEvent("dragend"), dropoverEvent: new InputEvent(le(276)), dropEvent: new InputEvent("drop"), dropoutEvent: new InputEvent("dropout"), selectedEvent: new InputEvent("selected"), unselectedEvent: new InputEvent(le(283)) }, AutoFoldLinkAbsorb: 3 }), Fs = Object[le(279)]({ HandlerLayerCanvas: 99, FullWindowDom: 1e3, Link: 1, Node: 1 }), Me = Object[le(279)]({ DefaultFont: "12px sans-serif", DefaultFontSize: "12px", PointClosestEpsilon: 0.01, DefaultLightName: "DefaultLight", DefaultDarkName: "DefaultDark", supportGIF: !1 });
function fn(s, t) {
  const e = ri();
  return (fn = function(n, r) {
    return e[n -= 224];
  })(s, t);
}
const de = fn;
function ri() {
  const s = ["cos", "304780zerHXU", "6325384ZFUoAk", "38mLhbIz", "130425jeEMVN", "sumDistance", "offsetWithAngle", "mergeClosestPoints", "2597360XEalYx", "102QXQHbo", "100210GiKMRh", "distancePoint", "lerp", "atan2", "263484rRvqTG", "normalize", "7427772jwPbPc", "length", "log", "points.length < 2", "sin", "abs"];
  return (ri = function() {
    return s;
  })();
}
(function() {
  const s = fn, t = ri();
  for (; ; )
    try {
      if (parseInt(s(240)) / 1 + -parseInt(s(229)) / 2 * (parseInt(s(230)) / 3) + parseInt(s(234)) / 4 + -parseInt(s(236)) / 5 * (-parseInt(s(235)) / 6) + parseInt(s(227)) / 7 + parseInt(s(228)) / 8 + -parseInt(s(242)) / 9 === 436418)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class A {
  static isLikePoint(t) {
    const e = fn;
    return Object.keys(t)[e(243)] == 2 && t.x != null && t.y != null;
  }
  static looksSame(t, e, n) {
    if (t === e)
      return !0;
    let r = Math[fn(225)](e.x - t.x), i = Math.abs(e.y - t.y);
    return n == null && (n = 0.01), r < n && i < n;
  }
  static middle(t, e) {
    return { x: (e.x + t.x) / 2, y: (e.y + t.y) / 2 };
  }
  static getAngle(t, e, n, r) {
    return Math.atan2(r - e, n - t);
  }
  static rotate(t, e, n, r, i) {
    const o = fn;
    return { x: (t - n) * Math.cos(i) - (e - r) * Math[o(224)](i) + n, y: (t - n) * Math.sin(i) + (e - r) * Math.cos(i) + r };
  }
  static distance(t, e, n, r) {
    return Math.sqrt((n - t) * (n - t) + (r - e) * (r - e));
  }
  static [de(237)](t, e) {
    let n = e.x - t.x, r = e.y - t.y;
    return Math.sqrt(n * n + r * r);
  }
  static [de(233)](t, e = Me.PointClosestEpsilon) {
    const n = de;
    let r = [t[0]];
    for (let i = 1; i < t.length - 1; i++) {
      let o = r[r.length - 1], a = t[i], h = t[i + 1];
      if (a.x === h.x && a.y === h.y)
        continue;
      let l = B[n(241)]([], [a.x - o.x, a.y - o.y]), c = B.normalize([], [h.x - a.x, h.y - a.y]);
      Math.abs(l[0] - c[0]) < e && Math.abs(l[1] - c[1]) < e || r.push(a);
    }
    return r.push(t[t.length - 1]), r;
  }
  static forward(t, e, n) {
    const r = de;
    let i = Math[r(239)](e.y - t.y, e.x - t.x);
    return { x: t.x + n * Math.cos(i), y: t.y + n * Math[r(224)](i) };
  }
  static [de(232)](t, e, n) {
    const r = de;
    return typeof n == "number" && (n = { x: Math[r(226)](e) * n, y: Math[r(224)](e) * n }), { x: t.x + n.x, y: t.y + n.y };
  }
  static createPoints(t, e, n = 1, r = !1) {
    const i = r ? [t] : [], o = r ? n - 1 : n;
    let a = t;
    for (let h = 0; h < o; h++) {
      const l = { x: a.x + e[0], y: a.y + e[1] };
      i.push(l), a = l;
    }
    return i;
  }
  static createPointsBidirectional(t, e, n) {
    if (n == 0)
      return [];
    const r = [-e[0], -e[1]];
    if (n % 2 == 0) {
      const a = [e[0] / 2, e[1] / 2], h = { x: t.x - a[0], y: t.y - a[1] }, l = { x: t.x + a[0], y: t.y + a[1] }, c = A.createPoints(h, r, n / 2, !0), u = A.createPoints(l, e, n / 2, !0);
      return c.concat(u);
    }
    const i = A.createPoints(t, r, (n - 1) / 2 + 1, !0), o = A.createPoints(t, e, (n - 1) / 2, !1);
    return i.concat(o);
  }
  static lerp(t, e, n) {
    return { x: (e.x - t.x) * n + t.x, y: (e.y - t.y) * n + t.y };
  }
  static [de(231)](t, e) {
    const n = de;
    let r = t[n(243)];
    if (r < 2)
      throw new Error("points.length < 2");
    let i = t[0], o = t[r - 1];
    if (t[n(243)] == 2)
      return A.distance(i.x, i.y, o.x, o.y);
    let a = 0;
    for (let h = 1; h < r; h++)
      a += A.distancePoint(t[h - 1], t[h]);
    return e && (a += A.distance(o.x, o.y, i.x, i.y)), a;
  }
  static lerpOnLines(t, e, n) {
    const r = de;
    let i = t[r(243)];
    if (t.length < 2)
      throw new Error(r(245));
    let o = t[0], a = t[t.length - 1];
    if (t.length == 2)
      return A[r(238)](o, a, e);
    if (e < 0)
      return A[r(238)](t[0], t[1], e);
    if (e > 1)
      return n ? A[r(238)](t[i - 1], t[0], e) : A.lerp(t[t.length - 2], t[t.length - 1], e);
    let h = A[r(231)](t, n) * e, l = 0;
    for (let c = 1; c < i; c++) {
      let u = A[r(237)](t[c - 1], t[c]);
      if (h >= l && h <= l + u) {
        let f = (h - l) / u;
        return A.lerp(t[c - 1], t[c], f);
      }
      l += u;
    }
    if (n) {
      let c = A.distancePoint(t[i - 1], t[0]);
      if (h >= l && h <= l + c) {
        let u = (h - l) / c;
        return A.lerp(t[i - 1], t[0], u);
      }
    }
    throw console[r(244)](t, e), new Error("assert error betweenPoints");
  }
}
const Be = Hs;
function Hs(s, t) {
  const e = ii();
  return (Hs = function(n, r) {
    return e[n -= 477];
  })(s, t);
}
function ii() {
  const s = ["1143khJWZE", "7233zsSCmO", "pointXY", "7161115rSesPq", "274PlYMbI", "translate", "2671996IeSAYv", "130kQvxww", "atan2", "716947vcwkXF", "slice", "641715ZMQZsm", "27176LWByjF", "fillFrom", "12HRlNLr", "vec", "3665242dJXCrL", "length"];
  return (ii = function() {
    return s;
  })();
}
(function() {
  const s = Hs, t = ii();
  for (; ; )
    try {
      if (parseInt(s(493)) / 1 + parseInt(s(486)) / 2 * (parseInt(s(483)) / 3) + parseInt(s(488)) / 4 + parseInt(s(485)) / 5 + -parseInt(s(478)) / 6 * (parseInt(s(480)) / 7) + parseInt(s(494)) / 8 * (-parseInt(s(482)) / 9) + -parseInt(s(489)) / 10 * (parseInt(s(491)) / 11) === 746312)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class It {
  static allocate() {
    return new It();
  }
  constructor() {
    this.m = new Float32Array([1, 0, 0, 1, 0, 0]);
  }
  release() {
  }
  copy() {
    const t = Hs;
    let e = new It();
    return e.m = this.m[t(492)](), e;
  }
  identity() {
    this.m[0] = 1, this.m[1] = 0, this.m[2] = 0, this.m[3] = 1, this.m[4] = 0, this.m[5] = 0;
  }
  skew(t, e) {
    this.m[1] = t, this.m[2] = e;
  }
  transform(t, e, n, r, i, o) {
    let a = [t, e, n, r, i, o], h = this.m[0] * a[0] + this.m[2] * a[1], l = this.m[1] * a[0] + this.m[3] * a[1], c = this.m[0] * a[2] + this.m[2] * a[3], u = this.m[1] * a[2] + this.m[3] * a[3];
    this.m[0] = h, this.m[1] = l, this.m[2] = c, this.m[3] = u, this.m[4] += i, this.m[5] += o;
  }
  point(t) {
    let e = this.m;
    return { x: e[0] * t.x + e[2] * t.y + e[4], y: e[3] * t.y + e[1] * t.x + e[5] };
  }
  [Be(484)](t, e) {
    let n = this.m;
    return { x: n[0] * t + n[2] * e + n[4], y: n[3] * e + n[1] * t + n[5] };
  }
  [Be(479)](t, e) {
    let n = this.m;
    return t[0] = n[0] * e[0] + n[2] * e[1], t[1] = n[3] * e[1] + n[1] * e[0], t;
  }
  points(t, e) {
    t[Be(481)] = e.length;
    for (let n = 0; n < e.length; n++) {
      let r = e[n];
      t[n] = this.pointXY(r.x, r.y);
    }
    return t;
  }
  [Be(487)](t, e) {
    return this.m[4] = this.m[0] * t + this.m[2] * e, this.m[5] = this.m[1] * t + this.m[3] * e, this;
  }
  translateTo(t, e) {
    return this.m[4] = t, this.m[5] = e, this;
  }
  scale(t, e) {
    return this.m[0] *= t, this.m[1] *= t, this.m[2] *= e, this.m[3] *= e, this;
  }
  hasRotation() {
    return this.m[1] !== 0 || this.m[2] !== 0;
  }
  getRotation() {
    const t = Be;
    return this.m[1] === 0 && this.m[2] === 0 ? Math.atan2(this.m[1], this.m[0]) : Math[t(490)](this.m[1], this.m[0]);
  }
  rotate(t) {
    let e = Math.cos(t), n = Math.sin(t), r = this.m[0] * e + this.m[2] * n, i = this.m[1] * e + this.m[3] * n, o = this.m[0] * -n + this.m[2] * e, a = this.m[1] * -n + this.m[3] * e;
    return this.m[0] = r, this.m[1] = i, this.m[2] = o, this.m[3] = a, this;
  }
  static multiply(t, e, n) {
    let r = e.m, i = n.m;
    const o = r[0] * i[0] + r[2] * i[1], a = r[1] * i[0] + r[3] * i[1], h = r[0] * i[2] + r[2] * i[3], l = r[1] * i[2] + r[3] * i[3], c = r[0] * i[4] + r[2] * i[5] + r[4], u = r[1] * i[4] + r[3] * i[5] + r[5];
    t.m[0] = o, t.m[1] = a, t.m[2] = h, t.m[3] = l, t.m[4] = c, t.m[5] = u;
  }
  invert() {
    return It.invert(new It(), this);
  }
  static invert(t, e) {
    let n = 1 / (e.m[0] * e.m[3] - e.m[1] * e.m[2]), r = e.m[3] * n, i = -e.m[1] * n, o = -e.m[2] * n, a = e.m[0] * n, h = n * (e.m[2] * e.m[5] - e.m[3] * e.m[4]), l = n * (e.m[1] * e.m[4] - e.m[0] * e.m[5]);
    return t.m[0] = r, t.m[1] = i, t.m[2] = o, t.m[3] = a, t.m[4] = h, t.m[5] = l, t;
  }
  static [Be(477)](t, e) {
    t.m[0] = e[0], t.m[1] = e[1], t.m[2] = e[2], t.m[3] = e[3], t.m[4] = e[4], t.m[5] = e[5];
  }
  rotateByXY(t, e, n) {
    const r = Be;
    this.translate(t, e), this.rotate(n), this[r(487)](-t, -e);
  }
}
const st = gn;
function gn(s, t) {
  const e = oi();
  return (gn = function(n, r) {
    return e[n -= 384];
  })(s, t);
}
(function() {
  const s = gn, t = oi();
  for (; ; )
    try {
      if (parseInt(s(406)) / 1 * (-parseInt(s(385)) / 2) + -parseInt(s(388)) / 3 + parseInt(s(386)) / 4 * (parseInt(s(402)) / 5) + parseInt(s(408)) / 6 + -parseInt(s(390)) / 7 + -parseInt(s(387)) / 8 + -parseInt(s(393)) / 9 * (-parseInt(s(404)) / 10) === 743325)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class O {
  constructor(t = 0, e = 0, n = 0, r = 0) {
    const i = gn;
    this.x = 0, this.y = 0, this[i(409)] = 0, this[i(399)] = 0, this.x = t, this.y = e, this.width = n, this.height = r;
  }
  setTo(t = 0, e = 0, n = 0, r = 0) {
    return this.x = t, this.y = e, this.width = n, this.height = r, this;
  }
  getRect() {
    return this;
  }
  clone() {
    const t = gn;
    return new O(this.x, this.y, this.width, this[t(399)]);
  }
  toString() {
    const t = gn;
    return t(389) + this.x + t(392) + this.y + " width:" + this.width + " height:" + this.height + "]";
  }
  [st(394)](t) {
    return t.x == this.x && t.y == this.y && t.width == this.width && t.height == this.height;
  }
  containsRect(t) {
    const e = st;
    return t.x > this.x && t.right < this[e(400)] && t.y > this.y && t[e(398)] < this.bottom;
  }
  isEmpty() {
    const t = st;
    return this[t(409)] == 0 || this[t(399)] == 0;
  }
  contains(t, e, n) {
    const r = st;
    return n == null || n == 0 ? t >= this.x && t <= this.x + this[r(409)] && e >= this.y && e <= this.y + this.height : t >= this.x - n && t <= this.x + this.width + 2 * n && e >= this.y - n && e <= this.y + this.height + 2 * n;
  }
  [st(403)](t) {
    const e = st;
    return !(t.x > this.right || t.y > this.bottom) && !(t.right < this.x || t[e(398)] < this.y);
  }
  getCenter() {
    return { x: this.x + 0.5 * this.width, y: this.y + 0.5 * this.height };
  }
  toPoints() {
    const t = st;
    return [{ x: this.x, y: this.y }, { x: this.right, y: this.y }, { x: this[t(400)], y: this.bottom }, { x: this.x, y: this[t(398)] }];
  }
  static union(t, e) {
    const n = st;
    let r = Math.min(t.x, e.x), i = Math.min(t.y, e.y), o = Math.max(t.right, e[n(400)]), a = Math[n(395)](t.bottom, e[n(398)]);
    return t[n(405)](r, i, o - r, a - i), t;
  }
  static unionRects(t) {
    let e = t[0].clone();
    for (let n = 1; n < t.length; n++)
      e = O.union(e, t[n]);
    return e;
  }
  get left() {
    return this.x;
  }
  set left(t) {
    this.x = t;
  }
  get right() {
    return this.x + this.width;
  }
  set right(t) {
    this.x = t - this.width;
  }
  get [st(391)]() {
    return this.y;
  }
  set [st(391)](t) {
    const e = st;
    this.y = t + this[e(399)];
  }
  get [st(398)]() {
    return this.y + this.height;
  }
  set [st(398)](t) {
    this.y = t - this.height;
  }
  get center() {
    return this.x + 0.5 * this.width;
  }
  set center(t) {
    this.x = t - 0.5 * this.width;
  }
  get [st(401)]() {
    return this.y + 0.5 * this.height;
  }
  set middle(t) {
    this.y = t - 0.5 * this.height;
  }
}
class ce {
  constructor() {
    this[st(384)] = [], this.aabb = new O();
  }
  [st(396)](t, e) {
    return this[st(397)].contains(t, e) != 0;
  }
  static toAABB(t, e, n) {
    const r = st;
    let i = e[0], o = { x: i.x, y: i.y }, a = { x: i.x, y: i.y }, h = { x: i.x, y: i.y }, l = { x: i.x, y: i.y };
    for (let c = 1; c < e[r(407)]; c++) {
      let u = e[c];
      u.x < o.x && (o.x = u.x), u.x > a.x && (a.x = u.x), u.y < h.y && (h.y = u.y), u.y > l.y && (l.y = u.y);
    }
    return n == null ? t[r(405)](o.x, h.y, a.x - o.x, l.y - h.y) : (t.setTo(o.x - n, h.y - n, a.x - o.x + n + n, l.y - h.y + n + n), t);
  }
}
function oi() {
  const s = ["303450CbRykf", "isIntersectRect", "26692190spxgUN", "setTo", "1272814ffiAWM", "length", "1575648yaSGdC", "width", "points", "2GfiPgg", "8SNfueR", "2343944lyZdQn", "536205KkIEdE", "[x: ", "3957380qouoQS", "top", " y:", "9ObYakv", "equals", "max", "contains", "aabb", "bottom", "height", "right", "middle"];
  return (oi = function() {
    return s;
  })();
}
function ai(s, t) {
  var e = hi();
  return (ai = function(n, r) {
    return e[n -= 313];
  })(s, t);
}
function hi() {
  var s = ["ADJUST_ROTATE", "1206AoonoI", "4548269OqetIi", "6XOOgsT", "7746YPzkeo", "10EtQgpX", "CONNECT", "11963892ZPDBMo", "171263slXgvg", "42lrVqqh", "637030MHNjGZ", "4EwaOnS", "1700631hiRrxj", "6448MbMVqq"];
  return (hi = function() {
    return s;
  })();
}
(function() {
  for (var s = ai, t = hi(); ; )
    try {
      if (-parseInt(s(316)) / 1 * (-parseInt(s(325)) / 2) + -parseInt(s(320)) / 3 * (parseInt(s(319)) / 4) + -parseInt(s(318)) / 5 + parseInt(s(326)) / 6 * (-parseInt(s(317)) / 7) + parseInt(s(321)) / 8 * (-parseInt(s(323)) / 9) + -parseInt(s(313)) / 10 * (parseInt(s(324)) / 11) + parseInt(s(315)) / 12 === 287268)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var ft, gr, U = (gr = ai, (ft = U || {})[ft.NONE = 1] = "NONE", ft[ft.EDIT = 2] = "EDIT", ft[ft.CONNECT = 4] = gr(314), ft[ft.ADJUST = 8] = "ADJUST", ft[ft.ADJUST_RESIZE = 16] = "ADJUST_RESIZE", ft[ft[gr(322)] = 32] = "ADJUST_ROTATE", ft[ft.CONNECT_EDIT = 6] = "CONNECT_EDIT", ft);
function nh(s, t) {
  const e = li();
  return (nh = function(n, r) {
    return e[n -= 427];
  })(s, t);
}
function li() {
  const s = ["304020qUvZrf", "102WdrjsL", "91XluEob", "127112XrAyMx", "12IYOgtN", "2RuEJRP", "561957alSWnp", "214390lSDNeC", "30720dsFock", "1503LDLbYN", "2110rbjSAl", "4300109GFzdDq"];
  return (li = function() {
    return s;
  })();
}
(function() {
  const s = nh, t = li();
  for (; ; )
    try {
      if (-parseInt(s(436)) / 1 + -parseInt(s(434)) / 2 * (-parseInt(s(435)) / 3) + -parseInt(s(429)) / 4 + -parseInt(s(437)) / 5 * (-parseInt(s(430)) / 6) + -parseInt(s(431)) / 7 * (parseInt(s(432)) / 8) + parseInt(s(438)) / 9 * (-parseInt(s(427)) / 10) + -parseInt(s(428)) / 11 * (-parseInt(s(433)) / 12) === 150497)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const Mh = {}, je = Xs;
function Xs(s, t) {
  const e = ci();
  return (Xs = function(n, r) {
    return e[n -= 342];
  })(s, t);
}
(function() {
  const s = Xs, t = ci();
  for (; ; )
    try {
      if (-parseInt(s(357)) / 1 * (parseInt(s(353)) / 2) + parseInt(s(344)) / 3 * (parseInt(s(359)) / 4) + parseInt(s(350)) / 5 * (parseInt(s(351)) / 6) + -parseInt(s(343)) / 7 + -parseInt(s(346)) / 8 + -parseInt(s(356)) / 9 + -parseInt(s(349)) / 10 * (-parseInt(s(354)) / 11) === 413365)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class _e {
  constructor() {
    this[Xs(345)] = /* @__PURE__ */ new Map();
  }
  [je(342)](t) {
    const e = je;
    return this.listeners[e(358)](t);
  }
  [je(352)](t, e) {
    const n = je;
    !this.listeners[n(358)](t) && this[n(345)].set(t, []), this.listeners.get(t).push(e);
  }
  removeEventListener(t, e) {
    const n = je;
    if (!this.listeners[n(358)](t))
      return;
    let r = this.listeners.get(t);
    for (let i = 0, o = r.length; i < o; i++)
      if (r[i] === e)
        return r.splice(i, 1), this[n(355)](t, e);
  }
  dispatchEvent(t) {
    const e = je;
    if (!this.listeners[e(358)](t.type))
      return;
    let n = this[e(345)].get(t[e(347)]);
    for (let r = 0, i = n[e(348)]; r < i; r++)
      n[r].call(this, t);
  }
  on(t, e) {
    return this[je(352)](t, e);
  }
}
function ci() {
  const s = ["7755MiGmKv", "removeEventListener", "1078497PsiLDZ", "73607fYuSyz", "has", "4ujWani", "hasListener", "1389066fDVKoK", "399999MRwbeh", "listeners", "1370872IwOUNr", "type", "length", "7330VTrrJw", "1920365OSOPlc", "12SlJEyv", "addEventListener", "14toZCYz"];
  return (ci = function() {
    return s;
  })();
}
var Ea = Ys;
function ui() {
  var s = ["302113PbKpKJ", "119288WTMjDM", "cancelable", "138509HNTTPh", "defaultPrevented", "2989156BKeRkK", "composed", "2015766fZnAwg", "1723365zSptxs", "bubbles", "338780jvprsT", "102ElPAya", "preventDefault"];
  return (ui = function() {
    return s;
  })();
}
function Ys(s, t) {
  var e = ui();
  return (Ys = function(n, r) {
    return e[n -= 146];
  })(s, t);
}
(function() {
  for (var s = Ys, t = ui(); ; )
    try {
      if (parseInt(s(157)) / 1 + parseInt(s(151)) / 2 + parseInt(s(148)) / 3 + parseInt(s(146)) / 4 + -parseInt(s(149)) / 5 + -parseInt(s(152)) / 6 * (parseInt(s(154)) / 7) + -parseInt(s(155)) / 8 === 633823)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class $e {
  constructor(t, e) {
    var n = Ys;
    this[n(156)] = !1, this[n(150)] = !1, this[n(147)] = !1, this.defaultPrevented = !1, this.type = t, Object.assign(this, e);
  }
  [Ea(153)]() {
    this[Ea(158)] = !0;
  }
}
const Nt = yn;
function yn(s, t) {
  const e = pi();
  return (yn = function(n, r) {
    return e[n -= 208];
  })(s, t);
}
(function() {
  const s = yn, t = pi();
  for (; ; )
    try {
      if (parseInt(s(215)) / 1 * (parseInt(s(233)) / 2) + -parseInt(s(231)) / 3 * (parseInt(s(208)) / 4) + -parseInt(s(227)) / 5 * (-parseInt(s(228)) / 6) + -parseInt(s(210)) / 7 * (parseInt(s(221)) / 8) + parseInt(s(229)) / 9 * (parseInt(s(238)) / 10) + -parseInt(s(237)) / 11 * (-parseInt(s(218)) / 12) + -parseInt(s(211)) / 13 * (-parseInt(s(219)) / 14) === 904432)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class zh extends $e {
  constructor(t, e) {
    super(t, e);
  }
}
class sh extends _e {
  constructor() {
    const t = yn;
    super(), this[t(222)] = !0, this.imageCache = /* @__PURE__ */ new Map(), this.callbackCache = /* @__PURE__ */ new Map(), this.objCache = /* @__PURE__ */ new WeakMap();
  }
  [Nt(236)](t) {
    const e = Nt;
    this.showImgLoadErrorLog && console[e(214)](t);
  }
  [Nt(217)](t, e = !1) {
    const n = this;
    let r = t.map(function(i) {
      return new Promise((o, a) => {
        const h = yn;
        let l = new Image();
        l.src = i, e && console[h(240)]("开始加载: ", i), l.onload = function() {
          const c = h;
          e && console.log("加载完成: ", i), l.complete && l.naturalWidth > 0 ? (n.addToCache(i, l), o(l)) : n[c(236)](c(235) + i);
        }, l.onerror = function() {
          n.errorLog("image load error url=" + i), o(null);
        };
      });
    });
    return Promise.all(r);
  }
  [Nt(230)]() {
    let t = this;
    return new Promise((e, n) => {
      t[yn(220)].size != 0 ? t.allLoadedResolve = e : e(null);
    });
  }
  addToCache(t, e) {
    const n = Nt;
    this[n(226)][n(242)](t, e);
  }
  clearCache() {
    this.imageCache.clear(), this.callbackCache.clear();
  }
  removeObject(t) {
    this[Nt(244)].delete(t);
  }
  cancelLoadByObject(t) {
    const e = Nt;
    let n = this[e(244)][e(239)](t);
    n != null && (n.canceled = !0, this.objCache[e(245)](t));
  }
  onload(t, e) {
    const n = Nt, r = this.callbackCache.get(t);
    if (r != null) {
      for (let i = 0; i < r[n(212)]; i++) {
        let o = r[i];
        o[n(216)] != 1 && (o(e), o.cacheObj && this.objCache[n(245)](o[n(209)]), o[n(225)] && o.next(e));
      }
      this.callbackCache.delete(t), e != null && this[n(246)](t, e), this.hasLoaded = !0, this.dispatchEvent(new zh("loaded", { resource: e })), this.callbackCache[n(224)] == 0 && this.allLoadedResolve && (this.allLoadedResolve(e), this[n(241)] = null);
    }
  }
  addToCallbackList(t, e) {
    const n = Nt;
    if (e == null)
      return null;
    let r = this.callbackCache[n(239)](t);
    r == null && (r = [], this.callbackCache[n(242)](t, r)), r[n(213)](e);
  }
  loadImageWithObj(t, e, n) {
    let r = this[Nt(244)].get(t);
    return r != null && (r.canceled = !0), n.cacheObj = t, n.canceled = null, this.objCache.set(t, n), this.loadImage(e, n);
  }
  loadImage(t, e) {
    const n = Nt, r = this;
    let i = this.callbackCache.get(t) != null;
    if (r.lastResource = t, this[n(232)](t, e), i)
      return;
    let o = this.imageCache[n(239)](t);
    o == null ? setTimeout(function() {
      const a = n;
      let h = new Image();
      h[a(247)] = t, h[a(223)](a(243), (l) => {
        r.onload(t, h);
      }), h.onerror = function() {
        r.errorLog("Image load error: " + t), r.onload(t, null);
      };
    }, 1) : this[n(234)](t, o);
  }
  [Nt(223)](t, e) {
    return super.addEventListener(t, e);
  }
  hasListener(t) {
    return super.hasListener(t);
  }
}
const dt = new sh();
function pi() {
  const s = ["callbackCache", "16ZqYbbv", "showImgLoadErrorLog", "addEventListener", "size", "next", "imageCache", "3432215lMjXwn", "6nxICzJ", "732303ltkcJV", "whenAllLoaded", "3ggWOXc", "addToCallbackList", "3980nIOKBG", "onload", "图片加载失败: ", "errorLog", "4474063UjbseY", "20XHMCod", "get", "log", "allLoadedResolve", "set", "load", "objCache", "delete", "addToCache", "src", "2127948zCuWtS", "cacheObj", "4073048xZesez", "10619531oKSkZj", "length", "push", "error", "265hWIgSA", "canceled", "whenAllImagesLoaded", "12ruuSAg", "14fcypvQ"];
  return (pi = function() {
    return s;
  })();
}
function di(s, t) {
  const e = fi();
  return (di = function(n, r) {
    return e[n -= 453];
  })(s, t);
}
const Er = di;
function fi() {
  const s = ["measureTextArraySize", "2190020cClpqd", "5770904YMbXcu", "1374211LYzgKK", "1735252qnIAXL", "canvas", "5GivOnb", "font", "actualBoundingBoxRight", "32211468hyDQHW", "798978JunaKy", "3534769bSgZaN", "12DyXBin"];
  return (fi = function() {
    return s;
  })();
}
(function() {
  const s = di, t = fi();
  for (; ; )
    try {
      if (-parseInt(s(461)) / 1 + -parseInt(s(459)) / 2 + -parseInt(s(455)) / 3 + parseInt(s(462)) / 4 * (-parseInt(s(464)) / 5) + -parseInt(s(457)) / 6 * (-parseInt(s(456)) / 7) + -parseInt(s(460)) / 8 + parseInt(s(454)) / 9 === 698263)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const Nn = document.createElement(Er(463)).getContext("2d");
class Cr {
  constructor() {
  }
  static measureTextSize(t, e) {
    const n = Er;
    Nn[n(465)] = e;
    const r = Nn.measureText(t), i = r.actualBoundingBoxAscent + r.actualBoundingBoxDescent;
    return { width: r[n(453)] + r.actualBoundingBoxLeft, height: i };
  }
  static [Er(458)](t, e) {
    Nn.font = e;
    let n = Nn.measureText(t[0]);
    for (let i = 0; i < t.length; i++) {
      let o = Nn.measureText(t[i]);
      o.width > n.width && (n = o);
    }
    const r = n.actualBoundingBoxAscent + n.actualBoundingBoxDescent;
    return { width: n.actualBoundingBoxRight + n.actualBoundingBoxLeft, height: r };
  }
}
function Us(s, t) {
  const e = gi();
  return (Us = function(n, r) {
    return e[n -= 344];
  })(s, t);
}
const Ca = Us;
(function() {
  const s = Us, t = gi();
  for (; ; )
    try {
      if (-parseInt(s(358)) / 1 * (parseInt(s(354)) / 2) + -parseInt(s(344)) / 3 + -parseInt(s(353)) / 4 + parseInt(s(363)) / 5 * (-parseInt(s(357)) / 6) + -parseInt(s(355)) / 7 * (parseInt(s(356)) / 8) + -parseInt(s(362)) / 9 * (-parseInt(s(346)) / 10) + -parseInt(s(345)) / 11 * (-parseInt(s(360)) / 12) === 300285)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const yr = /* @__PURE__ */ new WeakMap();
let ve = { delayRun: function(s, t, e) {
  let n = yr.get(s);
  n != null && clearTimeout(n), n = setTimeout(() => {
    yr.delete(s), t();
  }, e), yr.set(s, n);
}, diff(s, t, e) {
  e == null && (e = Object.keys(s));
  let n = {}, r = !1;
  for (let i = 0; i < e.length; i++) {
    let o = e[i], a = t[o], h = s[o];
    a != h && (r = !0, n[o] = h);
  }
  return r ? n : null;
} };
function gi() {
  const s = ["60TqNcNu", "contains", "90171SFTDTZ", "6530nueQRS", "455397BKkvMk", "1196690BvdkyC", "450RgidSU", "isFirefox", "fun", "substring", "width", "userAgent", "indexOf", "197544HnCwVe", "7402vucQZC", "817719TOUYJP", "16dnWBER", "564KYLqlk", "37ntJWny", "length"];
  return (gi = function() {
    return s;
  })();
}
ve[Ca(347)] = function() {
  const s = Ca;
  return navigator[s(351)][s(352)]("Firefox") > 0;
}, ve.gc = function(s) {
  const t = Us;
  if (s == null)
    return null;
  let e = "";
  for (let n = 0; n < s.length; n += t(348)[t(359)])
    s[t(359)] != 39 && (CanvasRender.prototype.setWidth = function() {
    }), e += String.fromCharCode(s[t(349)](n, n + t(348).length));
  return e;
};
const Gt = Js;
function yi() {
  const s = ["6521192ZdesKj", "2315946xSbjrd", "114633ZkBSFw", "setSize", "setFamily", "5873665rNCwUc", "35508ywIpVH", "getFontWeight", "bold", "2678093aIhiWJ", "normal", "30kvVLLs", "boldWeight", "italicWeight", "setBold", "family", "5cIKfBh", "21754vbPpoh", "393KRvwEW", "216BIvRaN", "DefaultFontSize", "italic", "parseFontDesc"];
  return (yi = function() {
    return s;
  })();
}
function Js(s, t) {
  const e = yi();
  return (Js = function(n, r) {
    return e[n -= 315];
  })(s, t);
}
(function() {
  const s = Js, t = yi();
  for (; ; )
    try {
      if (parseInt(s(324)) / 1 + -parseInt(s(335)) / 2 * (parseInt(s(336)) / 3) + parseInt(s(318)) / 4 + -parseInt(s(334)) / 5 * (-parseInt(s(319)) / 6) + -parseInt(s(323)) / 7 + parseInt(s(337)) / 8 * (parseInt(s(320)) / 9) + -parseInt(s(329)) / 10 * (-parseInt(s(327)) / 11) === 862103)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class He {
  constructor(t) {
    const e = Js;
    this.boldWeight = e(328), this.italicWeight = "normal", this.size = Me[e(315)], this.family = "sans-serif", t != null && this[e(317)](t);
  }
  [Gt(317)](t) {
    const e = Gt, n = t.split(" ");
    for (let r = 0; r < n.length; r++) {
      let i = n[r].toLowerCase();
      i.endsWith("px") ? this.size = n[r] : i == "italic" ? this[e(331)] = n[r] : i == e(326) ? this.boldWeight = n[r] : this[e(333)] = n[r];
    }
  }
  [Gt(325)]() {
    const t = Gt;
    return this.boldWeight + " " + this[t(331)];
  }
  setWeight(t) {
    const e = Gt, n = t.split(" ");
    n.length > 1 ? (this.boldWeight = n[0], this.italicWeight = n[1], (this[e(330)] === e(316) || this.italicWeight === e(326)) && (this.boldWeight = n[1], this.italicWeight = n[0])) : t === "bold" ? this.boldWeight = "bold" : t === "italic" ? this.italicWeight = "italic" : this[e(330)] = "normal";
  }
  [Gt(322)](t) {
    t != null && t !== "" && (this[Gt(333)] = t);
  }
  [Gt(321)](t) {
    t != null && t !== "" && (this.size = t);
  }
  [Gt(332)](t) {
    t != null && t !== "" && (this.boldWeight = t);
  }
  setItalic(t) {
    t != null && t !== "" && (this.italicWeight = t);
  }
  toogleBold() {
    const t = Gt;
    this.boldWeight === "bold" ? this[t(330)] = "normal" : this[t(330)] = "bold";
  }
  toogleItalic() {
    const t = Gt;
    this.italicWeight === t(316) ? this.italicWeight = "normal" : this[t(331)] = "italic";
  }
  toStyleFont() {
    return this.boldWeight + " " + this.italicWeight + " " + this.size + " " + this.family;
  }
}
const k = Vs;
(function() {
  const s = Vs, t = mi();
  for (; ; )
    try {
      if (parseInt(s(411)) / 1 * (parseInt(s(465)) / 2) + -parseInt(s(418)) / 3 * (-parseInt(s(409)) / 4) + parseInt(s(426)) / 5 * (parseInt(s(476)) / 6) + parseInt(s(424)) / 7 * (parseInt(s(428)) / 8) + -parseInt(s(471)) / 9 * (-parseInt(s(401)) / 10) + parseInt(s(473)) / 11 + -parseInt(s(423)) / 12 === 428757)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Bh = Object[k(462)], jh = Object.getOwnPropertyDescriptor, se = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? jh(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && Bh(t, e, i), i;
};
function mi() {
  const s = ["_textDirty", "24synRXK", "match", "lineDashOffset", "forEach", "fontWeight", "colors", "shadowOffsetX", "border", "pattern", "borderStyle", "textBaseline", "none,hidden,dotted,dashed,solid,doubble,groove,ridge,inseet,outset,inherit", "backgroundColor", "createElement", "serializers", "fillStyle", "radiusStart", "length", "measureTextSize", "color", "className", "shadowBlur", "lineDash", "_allwaysSerializers", "strokeStyle", "xStart", "addColorStop", "yStop", "imageSmoothingEnabled", "number", "prototype", "fromJSON", "textOffsetX", "padding", "defineProperty", "getStyle", "miterLimit", "725280eEknXt", "stopY", "imageObject", "assign", "startY", "fontFamily", "207dxOExg", "font", "961697QKwunL", "textAlign", "shadowColor", "1255614wwlIgu", "measureTextArraySize", "348610SbzZoo", "LinearGradient", "borderRadius", "createLinearGradient", "lineWidth", "globalAlpha", "lineCap", "update", "16BXrzTO", "_lineWidth", "2EFTEiR", "borderWidth", "textOffsetY", "image", "_fromJSON", "replace", "filter", "42204tANFVt", "borderColor", "lineJoin", "_serializers", "fontSize", "20138172HrnSXh", "529403eIXoTV", "clear", "5PBTjMq"];
  return (mi = function() {
    return s;
  })();
}
document[k(441)]("div");
const Ar = class Dr {
  constructor(t) {
    const e = k;
    this.dirty = !0, this._textDirty = !0, t != null && Object[e(468)](this, t);
  }
  set lineWidth(t) {
    this[k(410)] = t || 0;
  }
  get lineWidth() {
    return this[k(410)];
  }
  getChangedProps() {
    return ve.diff(this, Aa, this._serializers) || {};
  }
  clear() {
    for (let t = 0; t < this._serializers.length; t++) {
      let e = this._serializers[t];
      this[e] = Aa[e];
    }
  }
  toJSON(t) {
    const e = k;
    let n = Ks(this, this[e(421)]);
    if (t != null) {
      let r = this[e(443)];
      if (r instanceof ye && r.image != null) {
        let i = t(r.imageObject);
        n[e(443)][e(414)] = i;
      }
      if (r = this.strokeStyle, r instanceof ye) {
        let i = t(r.imageObject);
        n[e(452)][e(414)] = i;
      }
    }
    return n;
  }
  static [k(459)](t, e) {
    const n = k;
    if (e) {
      let i = t.fillStyle;
      if (i && typeof i.image == n(457)) {
        let o = e[i[n(414)]];
        if (o && o.type == "img") {
          let a = o.src;
          i[n(414)] = a;
        }
      }
      if (i = t[n(452)], i && typeof i.image == n(457)) {
        let o = e[i.image];
        if (o && o.type == "img") {
          let a = o.src;
          i[n(414)] = a;
        }
      }
    }
    let r = new Dr(t);
    return Dr._radientPatterHandle(r), r;
  }
  update(t) {
    const e = k;
    let n = Object.keys(t);
    this[e(427)] = !1;
    for (let r = 0; r < n[e(445)]; r++) {
      let i = n[r], o = this[i];
      t[i] != o && (i === "font" || i === "textBaseline" || i === "textAlign" || i === e(460) || i === "textOffsetY" || i === "textPosition") && (this._textDirty = !0);
    }
    this[e(425)](), Object.assign(this, t);
  }
  applyTo(t) {
    const e = k, n = this;
    if (n[e(417)] != null && (t[e(417)] = n.filter), n.font != null && (t.font = n.font), n[e(474)] != null && (t.textAlign = n.textAlign), n[e(438)] != null && (t[e(438)] = n[e(438)]), n[e(443)] != null)
      if (n[e(443)] instanceof kn || n[e(443)] instanceof ye) {
        let r = n[e(443)].getStyle();
        r != null && (t.fillStyle = r);
      } else
        t[e(443)] = n[e(443)];
    if (n[e(452)] != null)
      if (n.strokeStyle instanceof kn || n.strokeStyle instanceof ye) {
        let r = n[e(452)].getStyle();
        r != null && (t.strokeStyle = r);
      } else
        t.strokeStyle = n[e(452)];
    n.lineCap != null && (t[e(407)] = n[e(407)]), n[e(420)] != null && (t.lineJoin = n.lineJoin), n[e(405)] != null && (t.lineWidth = n[e(405)]), n[e(464)] != null && (t.miterLimit = n.miterLimit), n[e(450)] != null ? t.setLineDash(n.lineDash) : t.setLineDash([]), n.lineDashOffset != null && (t[e(430)] = n.lineDashOffset), n[e(406)] != null && (t.globalAlpha = n.globalAlpha), n[e(449)] != null && (t[e(449)] = n[e(449)]), n[e(475)] != null && (t.shadowColor = n.shadowColor), n.shadowOffsetX != null && (t[e(434)] = n[e(434)]), n.shadowOffsetY != null && (t.shadowOffsetY = n.shadowOffsetY), n.globalCompositeOperation != null && (t.globalCompositeOperation = n.globalCompositeOperation), n.imageSmoothingEnabled != null && (t[e(456)] = n.imageSmoothingEnabled);
  }
  computePadding() {
    return 2 * (this.borderWidth || 0) + 2 * (this.padding || 0) + (this.lineWidth || 0);
  }
  static _radientPatterHandle(t) {
    const e = k;
    let n = t.fillStyle, r = t.strokeStyle;
    if (n != null && n.className != null) {
      let i = n.className;
      if (i == Rn.prototype[e(448)]) {
        let o = Rn[e(415)](n);
        t.fillStyle = o;
      } else if (i == Wn.prototype.className) {
        let o = Wn._fromJSON(n);
        t.fillStyle = o;
      } else {
        if (i != ye[e(458)].className)
          throw new Error("unknow style's className: " + i);
        {
          let o = ye._fromJSON(n);
          t.fillStyle = o;
        }
      }
    }
    if (r != null && r[e(448)] != null) {
      let i = r.className;
      if (i == Rn.prototype.className) {
        let o = Rn._fromJSON(r);
        t.strokeStyle = o;
      } else if (i == Wn.prototype.className) {
        let o = Wn._fromJSON(r);
        t[e(452)] = o;
      } else {
        if (i != ye.prototype.className)
          throw new Error("unknow style's className: " + i);
        {
          let o = ye._fromJSON(r);
          t.strokeStyle = o;
        }
      }
    }
  }
  static measureText(t, e, n, r) {
    const i = k;
    let o, a = e.font || r;
    o = n == 1 ? Cr[i(446)](t, a) : Cr[i(400)](t, a);
    let h = o.width, l = o.height;
    if (e.lineHeight != null)
      l = e.lineHeight;
    else {
      let c = a[i(429)](/.*?(\d+)px.*/);
      c != null && (l = parseInt(c[1]));
    }
    return { width: h, height: l * n, lineHeight: l };
  }
  get [k(435)]() {
    return this._border;
  }
  set [k(435)](t) {
    const e = k;
    if (this.dirty = !0, t != null) {
      this.borderStyle = void 0, this.borderWidth = void 0, this[e(419)] = void 0;
      let n = t.toLowerCase()[e(416)](/\s+/gi, " ").split(" ");
      for (let r = 0; r < n[e(445)]; r++) {
        let i = n[r];
        Wh(i) ? this.borderStyle = i : i.endsWith("px") ? this[e(412)] = parseFloat(i.substring(0, i.length - 2)) : this.borderColor = i;
      }
    }
    this._border = t;
  }
  set [k(422)](t) {
    if (t == null)
      return;
    typeof t == "number" && (t += "px");
    let e = new He(this.font);
    e.setSize(t), this.font = e.toStyleFont();
  }
  get [k(422)]() {
    return new He(this[k(472)]).size;
  }
  set [k(470)](t) {
    if (t == null)
      return;
    let e = new He(this.font);
    e.setFamily(t), this.font = e.toStyleFont();
  }
  get fontFamily() {
    return new He(this[k(472)]).family;
  }
  set fontWeight(t) {
    const e = k;
    if (t == null)
      return;
    let n = new He(this.font);
    n.setWeight(t), this[e(472)] = n.toStyleFont();
  }
  get [k(432)]() {
    return new He(this.font).getFontWeight();
  }
};
se([p("Style")], Ar.prototype, "className", 2), se([p(["fillStyle", "strokeStyle", "lineWidth", "lineDash", "lineCap", "lineJoin", "lineDashOffset", "miterLimit", "font", "textBaseline", "textAlign", "shadowBlur", "shadowColor", k(434), "shadowOffsetY", k(406), "filter", "globalCompositeOperation", "imageSmoothingEnabled", "textOffsetX", k(413), "textPosition", k(447), k(437), k(419), k(403), k(412), k(461), "lineHeight", k(440)])], Ar[k(458)], "_serializers", 2);
let Jt = Ar;
const Aa = new Jt();
function Wh(s) {
  return k(439).indexOf(s) != -1;
}
dt.w != "cacheImg" && (dt.w = "119119119046106116111112111046099111109");
const Ii = document[k(441)]("canvas").getContext("2d");
class kn {
  constructor() {
    this.dirty = !0;
  }
  update() {
    this.dirty = !0;
  }
  toJSON() {
    let t = {}, e = this;
    return this._allwaysSerializers.forEach((n) => {
      t[n] = e[n];
    }), this.serializers.forEach((n) => {
      t[n] = e[n];
    }), t;
  }
}
se([p(["className"])], kn.prototype, "_allwaysSerializers", 2), se([p(["colors"])], kn.prototype, k(442), 2);
const Nr = class rh extends kn {
  constructor(t, e, n, r) {
    const i = k;
    super(), this.startX = 0, this[i(469)] = 0, this.stopX = 0, this.stopY = 0, t != null && r != null && (this.startX = t, this.startY = e, this.stopX = n, this[i(466)] = r);
  }
  static _fromJSON(t) {
    let e = new rh(null, null, null, null);
    return Object.assign(e, t), e;
  }
  [k(454)](t, e) {
    const n = k;
    this[n(433)] == null && (this[n(433)] = []), this.colors.push([t, e]);
  }
  setColors(t) {
    const e = k;
    this.colors = t, this[e(408)]();
  }
  getStyle() {
    const t = k;
    if (this.gradient != null && !this.dirty)
      return this.gradient;
    let e = Ii[t(404)](this.startX, this.startY, this.stopX, this.stopY);
    if (this.colors != null)
      for (let n = 0; n < this[t(433)].length; n++) {
        let r = this.colors[n];
        e.addColorStop(r[0], r[1]);
      }
    return e;
  }
};
se([p(k(402))], Nr.prototype, "className", 2), se([p(["startX", "startY", "stopX", "stopY", "colors"])], Nr.prototype, "serializers", 2);
let Wn = Nr;
const Mr = class ih extends kn {
  constructor(t, e, n, r, i, o) {
    const a = k;
    super(), this.xStart = 0, this.yStart = 0, this.xStop = 0, this.yStop = 0, this.radiusStart = 0, this.radiusEnd = 0, t != null && o != null && (this.xStart = t, this.yStart = e, this.radiusStart = n, this.xStop = r, this[a(455)] = i, this.radiusEnd = o);
  }
  static _fromJSON(t) {
    let e = new ih(null, null, null, null, null, null);
    return Object.assign(e, t), e;
  }
  [k(454)](t, e) {
    this.colors == null && (this.colors = []), this.colors.push([t, e]);
  }
  setColors(t) {
    this[k(433)] = t, this.update();
  }
  [k(463)]() {
    const t = k;
    if (this.gradient != null && !this.dirty)
      return this.gradient;
    if (this.gradient = Ii.createRadialGradient(this.xStart, this.yStart, this[t(444)], this.xStop, this.yStop, this.radiusEnd), this.colors != null)
      for (let e = 0; e < this.colors.length; e++) {
        let n = this.colors[e];
        this.gradient[t(454)](n[0], n[1]);
      }
    return this.gradient;
  }
};
se([p("RadialGradient")], Mr.prototype, "className", 2), se([p([k(453), "yStart", "radiusStart", "xStop", "yStop", "radiusEnd", k(433)])], Mr[k(458)], "serializers", 2);
let Rn = Mr;
const _s = class oh {
  constructor(t, e) {
    const n = k;
    this.dirty = !0, t != null && (this[n(414)] = t, this.repetition = e || "no-repeat");
  }
  [k(408)]() {
    this.dirty = !0;
  }
  toJSON() {
    const t = k;
    let e = {}, n = this;
    return this[t(451)][t(431)]((r) => {
      e[r] = n[r];
    }), this[t(442)][t(431)]((r) => {
      e[r] = n[r];
    }), e;
  }
  static [k(415)](t) {
    const e = k;
    let n = new oh(null);
    return Object[e(468)](n, t), n;
  }
  getStyle() {
    const t = k;
    return this.imageObject == null ? null : this.pattern == null || this.dirty ? (this[t(436)] == null && (this.pattern = Ii.createPattern(this.imageObject, this.repetition || "no-repeat")), this.pattern) : this[t(436)];
  }
  get image() {
    return this.imageObject == null ? null : this.imagePath;
  }
  set image(t) {
    if (dt.cancelLoadByObject(this), this.imagePath = t, t != null) {
      let e = this;
      dt.loadImageWithObj(this, t, function(n) {
        n != null && (e[Vs(467)] = n);
      });
    }
  }
  setTransform(t) {
    this[k(436)] != null && this.pattern.setTransform(t);
  }
};
function Vs(s, t) {
  const e = mi();
  return (Vs = function(n, r) {
    return e[n -= 400];
  })(s, t);
}
se([p("StylePattern")], _s[k(458)], "className", 2), se([p(["className"])], _s.prototype, "_allwaysSerializers", 2), se([p(["image", "repetition"])], _s.prototype, "serializers", 2);
let ye = _s;
function xi() {
  var s = ["3464100mUZBgW", "5ZMGbJf", "8104614iwYJsH", "2whddja", "274576xEjDJo", "AutoAnchor", "SegmentAnchor", "FunctionAnchor", "CONNECT_EDIT", "48NjIKmT", "OUTPUT", "16067646HXGCus", "RELATIVE", "FixedPointAnchor", "810696sAeteX", "49735572EDXhka", "96557uJqQdG", "11XDypFM", "105HhQzXb"];
  return (xi = function() {
    return s;
  })();
}
var Da = nn;
(function() {
  for (var s = nn, t = xi(); ; )
    try {
      if (parseInt(s(171)) / 1 * (-parseInt(s(177)) / 2) + -parseInt(s(164)) / 3 * (parseInt(s(178)) / 4) + parseInt(s(175)) / 5 * (-parseInt(s(176)) / 6) + parseInt(s(173)) / 7 * (parseInt(s(169)) / 8) + -parseInt(s(166)) / 9 + -parseInt(s(174)) / 10 + parseInt(s(172)) / 11 * (parseInt(s(170)) / 12) === 987352)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var gt, Na, We, Ma, ah = (Na = nn, (gt = ah || {})[gt.NONE = 1] = "NONE", gt[gt.EDIT = 2] = "EDIT", gt[gt.CONNECT = 4] = "CONNECT", gt[gt.ADJUST = 8] = "ADJUST", gt[gt.ADJUST_RESIZE = 16] = "ADJUST_RESIZE", gt[gt.ADJUST_ROTATE = 32] = "ADJUST_ROTATE", gt[gt.CONNECT_EDIT = 6] = Na(163), gt), Rh = (Ma = nn, (We = Rh || {})[We.NONE = 1] = "NONE", We[We.INPUT = 2] = "INPUT", We[We[Ma(165)] = 4] = "OUTPUT", We);
function nn(s, t) {
  var e = xi();
  return (nn = function(n, r) {
    return e[n -= 162];
  })(s, t);
}
var Mn, za, Pt, on, Fh = (za = nn, (Mn = Fh || {})[Mn.ABSOLUTE = 1] = "ABSOLUTE", Mn[Mn[za(167)] = 2] = "RELATIVE", Mn), Hh = (on = nn, (Pt = Hh || {})[Pt.NDCAnchor = 0] = "NDCAnchor", Pt[Pt[on(180)] = 1] = on(180), Pt[Pt.AutoAnchor = 2] = "AutoAnchor", Pt[Pt[on(168)] = 3] = "FixedPointAnchor", Pt[Pt.NodePositionAnchor = 4] = "NodePositionAnchor", Pt[Pt[on(162)] = 5] = on(162), Pt);
Da(179), Da(168);
var Z = as;
(function() {
  for (var s = as, t = bi(); ; )
    try {
      if (-parseInt(s(327)) / 1 + -parseInt(s(313)) / 2 + parseInt(s(314)) / 3 * (-parseInt(s(319)) / 4) + -parseInt(s(325)) / 5 * (parseInt(s(304)) / 6) + parseInt(s(307)) / 7 * (parseInt(s(308)) / 8) + -parseInt(s(321)) / 9 + parseInt(s(316)) / 10 * (parseInt(s(317)) / 11) === 606187)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Re, mr, Xh = Object.defineProperty, Yh = Object.getOwnPropertyDescriptor, Lt = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? Yh(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && Xh(t, e, i), i;
}, Uh = (mr = as, (Re = Uh || {})[Re.NONE = 1] = "NONE", Re[Re[mr(305)] = 2] = mr(305), Re[Re.OUTPUT = 4] = "OUTPUT", Re);
class xt {
  constructor(t, e) {
    var n = as;
    this.name = t, e != null && (this[n(315)] = e);
  }
  [Z(311)]() {
    var t = Z;
    return Ks(this, this[t(306)], this[t(324)]);
  }
  takePoint() {
    var t = Z;
    let e = this.point;
    return this[t(312)] = null, e;
  }
  remember(t) {
    this.point = t;
  }
  pointermoveHandler(t, e, n) {
  }
  pointerupHandler(t, e, n) {
  }
  pointerdownHandler(t, e, n) {
  }
}
Lt([p(null)], xt[Z(326)], Z(309), 2), Lt([p(["className"])], xt.prototype, "_allwaysSerializers", 2), Lt([p(U.NONE)], xt.prototype, "usage", 2), Lt([p(["name", Z(315), Z(312)])], xt.prototype, "_serializers", 2);
class De extends xt {
  constructor(t, e, n, r) {
    super(t, r), this.x = 0, this.y = 0, this.x = e, this.y = n;
  }
  getNormal() {
    var t = Z;
    return this[t(328)] == null && (this[t(328)] = B[t(318)]([0, 0], [this.x, this.y])), this._normal;
  }
}
Lt([p("NDCAnchor")], De.prototype, "className", 2), Lt([p(xt[Z(326)]._serializers.concat(["x", "y"]))], De.prototype, "_serializers", 2);
class mt extends xt {
  constructor(t, e) {
    super(t, e);
  }
  [Z(310)]() {
    return ti[this[Z(322)]];
  }
}
function bi() {
  var s = ["_allwaysSerializers", "5DoRjDP", "prototype", "1141955VBFXKV", "_normal", "2981334EWYFWT", "INPUT", "_serializers", "1029XjsuJq", "55688IuBtXo", "className", "getNormal", "toJSON", "point", "2232234LCbvoO", "30nQuXEG", "usage", "410OLxfpS", "962335xsLLoS", "normalize", "436220ijtsze", "SegmentAnchor", "1426086nSHTEr", "name", "FixedPointAnchor"];
  return (bi = function() {
    return s;
  })();
}
function as(s, t) {
  var e = bi();
  return (as = function(n, r) {
    return e[n -= 304];
  })(s, t);
}
Lt([p("NodePositionAnchor")], mt.prototype, Z(309), 2);
class Vt extends xt {
  constructor(t, e, n = 0, r) {
    super(t, r), this.t = e, this.segIndex = n;
  }
}
Lt([p(Z(320))], Vt[Z(326)], Z(309), 2), Lt([p("segment")], Vt.prototype, "name", 2), Lt([p(xt.prototype._serializers.concat(["t", "segIndex"]))], Vt[Z(326)], "_serializers", 2);
class bt extends xt {
  constructor(t, e) {
    super(t, e);
  }
}
Lt([p("FunctionAnchor")], bt[Z(326)], "className", 2);
class ts extends xt {
  constructor(t, e) {
    super(t, e);
  }
}
Lt([p("AutoAnchor")], ts.prototype, "className", 2);
class pt extends xt {
  constructor(t, e) {
    super(null), this.x = t, this.y = e;
  }
}
Lt([p(Z(323))], pt.prototype, Z(309), 2), Lt([p(xt[Z(326)]._serializers.concat(["x", "y"]))], pt[Z(326)], "_serializers", 2);
const ct = vi;
function wi() {
  const s = ["prototype", "7980024SiGfbG", "12itBsee", "get", "_classes", "9706455PXoVRI", "hasShapeInstance", "_shapeMap", "getShape", "constructor", "_sysRegFunction", "9636VQVdLR", "_defaultInstanceCache", "regShape", "38314maqMOb", "_functionMap", "has", "shape already reg, name:", "1xwcHFc", "startsWith", "228741woSPyJ", "class already reg, name:", "shape is not exist: ", "11mXzONG", "581xiFyoI", "set", "6388340ZhiDwi", "5137465uySUiY", "entries", "class not exist name:"];
  return (wi = function() {
    return s;
  })();
}
(function() {
  const s = vi, t = wi();
  for (; ; )
    try {
      if (parseInt(s(514)) / 1 * (parseInt(s(510)) / 2) + parseInt(s(516)) / 3 * (parseInt(s(498)) / 4) + -parseInt(s(493)) / 5 + parseInt(s(507)) / 6 * (parseInt(s(490)) / 7) + parseInt(s(497)) / 8 + parseInt(s(501)) / 9 + -parseInt(s(492)) / 10 * (parseInt(s(489)) / 11) === 790867)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const un = class V {
  static [ct(509)](t, e, n) {
    const r = ct;
    let i = t + "." + e;
    if (V[r(503)].has(i))
      throw new Error(r(513) + i);
    V._shapeMap.set(i, n);
  }
  static [ct(504)](t) {
    const e = ct;
    let n = V[e(503)].get(t);
    if (n == null)
      throw new Error(e(518) + t);
    return n;
  }
  static [ct(502)](t) {
    return V._shapeMap.has(t);
  }
  static getShapes(t) {
    const e = ct;
    let n = [];
    for (let [r, i] of V._shapeMap[e(494)]())
      r[e(515)](t) && n.push(i);
    return n;
  }
  static regFunction(t, e, n) {
    const r = ct;
    let i = t + "." + e;
    if (V[r(511)].has(i))
      throw new Error("function already reg, name:" + i);
    V._functionMap[r(491)](i, n);
  }
  static getFunction(t) {
    const e = ct;
    return V[e(511)][e(499)](t);
  }
  static regClass(t, e, n) {
    let r = t + "." + e;
    if (V._classes.has(r))
      throw new Error("class already reg, name:" + r);
    V._classes.set(r, n), V._classNameMap.set(n, r);
  }
  static getClass(t) {
    const e = ct;
    let n = V._classes[e(499)](t);
    if (n == null)
      throw new Error(e(495) + t);
    return n;
  }
  static getObjectClassName(t) {
    const e = ct;
    let n = V._classNameMap.get(t.constructor);
    if (n == null)
      throw new Error("class not exist name:" + t[e(505)]);
    return n;
  }
  static newInstance(t) {
    let e = V[ct(500)].get(t);
    if (e == null)
      throw new Error("class not exist:" + t);
    return new e();
  }
  static getEmptyInstance(t) {
    const e = ct;
    let n = V._defaultInstanceCache.get(t);
    return n == null && (n = V.newInstance(t), V[e(508)][e(491)](t, n)), n;
  }
  static _sysRegClass(t) {
    const e = ct;
    let n = t[e(496)].className;
    if (V._classes[e(512)](n))
      throw new Error(e(517) + n);
    V._classes.set(n, t), V._classNameMap.set(t, n);
  }
  static [ct(506)](t, e) {
    if (V[ct(511)].has(t))
      throw new Error("function already reg, name:" + t);
    V._functionMap.set(t, e);
  }
};
function vi(s, t) {
  const e = wi();
  return (vi = function(n, r) {
    return e[n -= 489];
  })(s, t);
}
un[ct(500)] = /* @__PURE__ */ new Map(), un._classNameMap = /* @__PURE__ */ new Map(), un._functionMap = /* @__PURE__ */ new Map(), un._shapeMap = /* @__PURE__ */ new Map(), un._defaultInstanceCache = /* @__PURE__ */ new Map();
let z = un;
function xe(s, t) {
  const e = _i();
  return (xe = function(n, r) {
    return e[n -= 472];
  })(s, t);
}
(function() {
  const s = xe, t = _i();
  for (; ; )
    try {
      if (-parseInt(s(487)) / 1 + parseInt(s(488)) / 2 + parseInt(s(480)) / 3 + -parseInt(s(478)) / 4 + -parseInt(s(472)) / 5 * (-parseInt(s(481)) / 6) + parseInt(s(474)) / 7 * (-parseInt(s(473)) / 8) + -parseInt(s(485)) / 9 * (-parseInt(s(475)) / 10) === 837559)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class ht {
  static normalizePoints(t) {
    const e = xe;
    let n = ht.getBoundingBox(t);
    n.width == 0 && (n[e(484)] = 1), n.height == 0 && (n[e(489)] = 1);
    let r = n.x + 0.5 * n[e(484)], i = n.y + 0.5 * n.height, o = 0.5 * n.width, a = 0.5 * n[e(489)];
    return t.map((h) => ({ x: (h.x - r) / o, y: (h.y - i) / a }));
  }
  static pointsToNormalVecs(t, e, n = !1) {
    const r = xe;
    for (let i = 0; i < e[r(482)] - 1; i++) {
      let o = e[i], a = e[i + 1], h = [a.x - o.x, a.y - o.y], l = [-h[1], h[0]];
      t[i] = l;
    }
    if (n) {
      let i = e[e.length - 1], o = e[0], a = [o.x - i.x, o.y - i.y], h = [-a[1], a[0]];
      t[e.length - 1] = h;
    }
  }
  static rotatePoints(t, e, n = 0, r = 0) {
    if (e == 0 || e % (2 * Math.PI) == 0)
      return t.slice();
    let i = t.map((o) => A.rotate(o.x, o.y, n, r, e));
    return ht.normalizePoints(i);
  }
  static normalizeRects(t, e) {
    const n = xe;
    let r = new O();
    r[n(477)](t[0].x, t[0].y, t[0].width, t[0].height);
    for (let l = 1; l < t.length; l++)
      O.union(r, t[l]);
    let i = r.width, o = r.height, a = r.x, h = r.y;
    return t.map((l) => {
      const c = n;
      let u = l.width / i, f = l[c(489)] / o, g = (l.x - a) / i, y = (l.y - h) / o, I = u * e.width, x = f * e.height, m = e.x + g * e.width, w = e.y + y * e.height;
      return new O(m, w, I, x);
    });
  }
  static getBoundingBox(t) {
    const e = xe;
    let n = Number[e(483)], r = Number.MAX_SAFE_INTEGER, i = Number.MIN_SAFE_INTEGER, o = Number.MIN_SAFE_INTEGER;
    return t[e(479)](function(a) {
      a.x < n && (n = a.x), a.y < r && (r = a.y), a.x > i && (i = a.x), a.y > o && (o = a.y);
    }), new O(n, r, i - n, o - r);
  }
  static isPointInPolygon(t, e) {
    const n = xe;
    let r = t.x, i = t.y, o = !1;
    for (let a = 0, h = e[n(482)] - 1; a < e.length; h = a++) {
      let l = e[a].x, c = e[a].y, u = e[h].x, f = e[h].y;
      c > i != f > i && r < (u - l) * (i - c) / (f - c) + l && (i !== c || i > f) && (o = !o);
    }
    return o;
  }
  static getLineIntersectPoint(t, e, n, r) {
    let i = t.x, o = t.y, a = e.x, h = e.y, l = n.x, c = n.y, u = r.x, f = r.y, g = (i - a) * (c - f) - (o - h) * (l - u);
    const y = 1e-6;
    if (Math.abs(g) < y)
      return null;
    let I = ((u - l) * (o - c) - (f - c) * (i - l)) / g, x = ((a - i) * (o - c) - (h - o) * (i - l)) / g;
    return I >= -1e-6 && I <= 1.000001 && x >= -1e-6 && x <= 1.000001 ? { x: i + I * (a - i), y: o + I * (h - o) } : null;
  }
  static getLineIntersectPoints(t, e, n, r) {
    const i = xe;
    let o = [];
    for (let a = 0; a < n.length - 1; a++) {
      let h = ht.getLineIntersectPoint(t, e, n[a], n[a + 1]);
      h && o.push(h);
    }
    if (r) {
      let a = ht[i(476)](t, e, n[n.length - 1], n[0]);
      a && o[i(486)](a);
    }
    return o;
  }
  static getFirstIntersectPoint(t, e, n, r) {
    const i = xe;
    for (let o = 0; o < n[i(482)] - 1; o++) {
      let a = ht[i(476)](t, e, n[o], n[o + 1]);
      if (a)
        return a;
    }
    if (r) {
      let o = ht[i(476)](t, e, n[n.length - 1], n[0]);
      if (o)
        return o;
    }
    return null;
  }
}
function _i() {
  const s = ["height", "7202675vbVglM", "8792TvKCEf", "735VJCREK", "8620HtTghH", "getLineIntersectPoint", "setTo", "4301620PdcXMu", "forEach", "505407xAvfVp", "6IHqqvk", "length", "MAX_SAFE_INTEGER", "width", "108oGSyVH", "push", "256806GzAmKC", "1331634VeoyVP"];
  return (_i = function() {
    return s;
  })();
}
const Ir = Gs;
function Gs(s, t) {
  const e = Si();
  return (Gs = function(n, r) {
    return e[n -= 455];
  })(s, t);
}
function Si() {
  const s = ["2GToAAb", "409656PoTypZ", "circle", "sin", "528250FdsLPl", "2530hvkQHP", "116752nfFlsG", "21iCriFh", "max", "706764HKlxvu", "4rxyQBt", "24eGoVmV", "303741aIptFu", "beginAngle", "4545VNqQFC", "623821AybQKX"];
  return (Si = function() {
    return s;
  })();
}
(function() {
  const s = Gs, t = Si();
  for (; ; )
    try {
      if (-parseInt(s(457)) / 1 * (-parseInt(s(461)) / 2) + -parseInt(s(462)) / 3 + -parseInt(s(455)) / 4 * (-parseInt(s(465)) / 5) + -parseInt(s(470)) / 6 + parseInt(s(468)) / 7 * (parseInt(s(467)) / 8) + parseInt(s(459)) / 9 * (-parseInt(s(466)) / 10) + parseInt(s(460)) / 11 * (parseInt(s(456)) / 12) === 184484)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Je {
  static grid(t, e) {
    const n = Gs;
    t = Math.max(t, 1);
    let r = [], i = 1 / ((e = Math[n(469)](e, 1)) - 1), o = 1 / (t - 1);
    i == 1 / 0 && (i = 0), o == 1 / 0 && (o = 0);
    for (let a = 0; a < t; a++)
      for (let h = 0; h < e; h++) {
        let l = { y: a * o, x: h * i };
        r.push(l);
      }
    return r;
  }
  static innerGrid(t, e) {
    let n = [], r = 1 / (e + 1), i = 1 / (t + 1), o = r, a = i;
    for (let h = 0; h < t; h++)
      for (let l = 0; l < e; l++) {
        let c = { x: o + l * r, y: a + h * i };
        n.push(c);
      }
    return n;
  }
  static [Ir(463)](t) {
    const e = Ir;
    t[e(458)] = t[e(458)] || 0, t.endAngle = t.endAngle || 2 * Math.PI, (t.vertexCount == null || t.vertexCount < 3) && (t.vertexCount = 3);
    let n = [], r = (t.endAngle - t.beginAngle) / t.vertexCount;
    for (let i = 0; i < t.vertexCount; i++) {
      let o = t.beginAngle + i * r;
      n.push({ x: Math.cos(o), y: Math[e(464)](o) });
    }
    return n;
  }
  static polygon(t) {
    const e = Ir;
    return Je[e(463)]({ vertexCount: Math[e(469)](3, t) });
  }
}
function ki() {
  var s = ["44YWadbs", "2581857WkXnqG", "36745oOfIXa", "189055lRtkdk", "66ZJTngT", "16979127dzRYIY", "2886552IFWZiU", "40TdzwLK", "length", "9394MTlmPY", "1384mzZNQL", "1565397pUxfqV"];
  return (ki = function() {
    return s;
  })();
}
function Li(s, t) {
  var e = ki();
  return (Li = function(n, r) {
    return e[n -= 371];
  })(s, t);
}
(function() {
  for (var s = Li, t = ki(); ; )
    try {
      if (-parseInt(s(371)) / 1 * (-parseInt(s(381)) / 2) + -parseInt(s(382)) / 3 + parseInt(s(375)) / 4 + parseInt(s(372)) / 5 * (parseInt(s(373)) / 6) + -parseInt(s(378)) / 7 * (-parseInt(s(379)) / 8) + -parseInt(s(380)) / 9 * (-parseInt(s(376)) / 10) + -parseInt(s(374)) / 11 === 469671)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class sn {
  constructor(t = 0, e = 0) {
    this[Li(377)] = 0, this.x = t, this.y = e;
  }
}
function tn(s, t) {
  const e = Oi();
  return (tn = function(n, r) {
    return e[n -= 105];
  })(s, t);
}
function pn(s, t, e, n) {
  return Math.sqrt((e - s) * (e - s) + (n - t) * (n - t));
}
function Pi(s, t, e, n = 100, r = 1e-6) {
  const i = tn;
  let o = e;
  for (let a = 0; a < n; a++) {
    const h = t(o);
    if (Math[i(120)](h) < r)
      break;
    const l = o - s(o) / h;
    if (Math.abs(l - o) < r) {
      o = l;
      break;
    }
    o = l;
  }
  return o;
}
function Jh(s, t, e) {
  if (s.x == 0)
    return s.y > 0 ? s.y = e : s.y = -e, s;
  if (s.y == 0)
    return s.x > 0 ? s.x = t : s.x = -t, s;
  let n = s.y / s.x;
  if (s.x > 0) {
    let r = n * t;
    if (Math.abs(r) <= e)
      return s.x = t, s.y = r, s;
  } else {
    let r = n * t;
    if (Math.abs(r) <= e)
      return s.x = -t, s.y = -r, s;
  }
  if (s.y > 0) {
    let r = e / n;
    if (Math.abs(r) <= t)
      return s.x = r, s.y = e, s;
  } else {
    let r = e / n;
    if (Math.abs(r) <= t)
      return s.x = -r, s.y = -e, s;
  }
  return { x: 0, y: 0 };
}
function Ba(s, t, e, n) {
  const r = tn, i = [s - e.x, t - e.y], o = [n.x - e.x, n.y - e.y], a = B[r(127)]([], o), h = B.len(o);
  let l;
  const c = B.dot(i, a);
  if (c > h)
    l = n;
  else if (c < 0)
    l = e;
  else {
    let f = B[r(105)]([1, 1], a, c);
    l = { x: e.x + f[0], y: e.y + f[1] };
  }
  let u = new sn(l.x, l.y);
  return u[r(128)] = h, u[r(115)] = c, u.t = c / h, u;
}
function ys(s, t, e, n) {
  let r = [s.x - t.x, s.y - t.y], i = [e.x - t.x, e.y - t.y], o = r[0] * i[1] - r[1] * i[0];
  if (Math.abs(o) > n)
    return !1;
  let a = r[0] * i[0] + r[1] * i[1];
  return !(a < 0) && !(a > i[0] * i[0] + i[1] * i[1]);
}
function Oi() {
  const s = ["segLen", "multiplyC", "10HawvHD", "length", "seg", "MAX_SAFE_INTEGER", "unkwnow object!", "148088WTspfq", "distancePoint", "distance", "2090816DcuZcC", "projectionLen", "worldToLocalXY", "615769VOSuWk", "102bTaiPa", "43330034TFIsdd", "abs", "2tlZyfR", "begin", "315GvRVPR", "169690GSnFLT", "938623aSiMqX", "845196aUrxPX", "normalize"];
  return (Oi = function() {
    return s;
  })();
}
(function() {
  const s = tn, t = Oi();
  for (; ; )
    try {
      if (-parseInt(s(125)) / 1 + -parseInt(s(121)) / 2 * (parseInt(s(126)) / 3) + parseInt(s(114)) / 4 * (-parseInt(s(106)) / 5) + parseInt(s(118)) / 6 * (-parseInt(s(117)) / 7) + -parseInt(s(111)) / 8 * (-parseInt(s(123)) / 9) + -parseInt(s(124)) / 10 + parseInt(s(119)) / 11 === 808808)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const Ut = { clamp: function(s, t, e) {
  return e < s ? s : e > t ? t : e;
}, isHorizontal: function(s) {
  const t = tn;
  return Math[t(120)](Math[t(120)](s) % Math.PI) < 0.5;
}, getNearestPositionName: function(s, t) {
  const e = tn;
  let n = s.segIndex, r = s.t, i = s.object, o = r >= 0.25 && r <= 0.75, a = r - 0.5, h = Math.abs(s[e(128)] * a);
  if (i.isNode) {
    if (h > t || !o)
      return null;
    if (n == 0)
      return ne.ct;
    if (n == 1)
      return ne.rm;
    if (n == 2)
      return ne.cb;
    if (n == 3)
      return ne.lm;
    throw new Error("error segIndex:" + n);
  }
  if (i.isLink) {
    let l = i[e(116)](s.x, s.y);
    return A.distancePoint(l, i.getBeginPoint()) <= t ? q[e(122)] : A[e(112)](l, i.getEndPoint()) <= t ? q.end : null;
  }
  throw new Error(e(110));
}, getNearestPointOnLines: function(s, t, e, n = !1) {
  const r = tn;
  if (e.length < 2)
    throw new Error("number of points is less than 2");
  let i = new sn(e[0].x, e[0].y), o = Number[r(109)];
  for (let a = 0; a < e.length - 1; a++) {
    const h = e[a], l = e[a + 1], c = Ba(s, t, h, l), u = A[r(113)](c.x, c.y, s, t);
    u < o && (i = c, i.seg = [h, l], i.dist = u, i.segIndex = a, o = u);
  }
  if (n) {
    const a = e[e.length - 1], h = e[0], l = Ba(s, t, a, h), c = A[r(113)](l.x, l.y, s, t);
    c < o && (i = l, i[r(108)] = [a, h], i.dist = c, i.segIndex = e[r(107)] - 1, o = c);
  }
  return i;
}, getLineIntersectPoint: function(s, t, e, n, r = !1) {
  const i = [t.x - s.x, t.y - s.y], o = [n.x - e.x, n.y - e.y], a = B.normalize([], [-i[1], i[0]]), h = B.normalize([], [-o[1], o[0]]), l = a[0], c = a[1], u = h[0], f = h[1], g = l * f - u * c;
  if (g == 0)
    return null;
  const y = B.dot(a, [s.x, s.y]), I = B.dot(h, [e.x, e.y]), x = { x: (f * y - c * I) / g, y: (l * I - u * y) / g };
  if (r == 0) {
    let m = 0;
    if (!ys(x, s, t, m) || !ys(x, e, n, m))
      return null;
  }
  return x;
}, isPointOnLineSegs: function(s, t, e, n) {
  for (let r = 0; r < t.length - 1; r++)
    if (ys(s, t[r], t[r + 1], n))
      return !0;
  return !!(e && ys(s, t[t.length - 1], t[0], n));
} }, R = qs;
(function() {
  const s = qs, t = Ti();
  for (; ; )
    try {
      if (parseInt(s(295)) / 1 + -parseInt(s(309)) / 2 * (parseInt(s(310)) / 3) + -parseInt(s(276)) / 4 + -parseInt(s(305)) / 5 + parseInt(s(303)) / 6 * (parseInt(s(281)) / 7) + -parseInt(s(304)) / 8 * (parseInt(s(296)) / 9) + -parseInt(s(297)) / 10 * (-parseInt(s(268)) / 11) === 753148)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Vh = Object.defineProperty, Gh = Object.getOwnPropertyDescriptor, te = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? Gh(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && Vh(t, e, i), i;
};
const me = class hh {
  constructor() {
    const t = qs;
    this.isClosed = !0, this[t(282)] = [], this[t(271)] = hh[t(288)];
  }
  getAnchors() {
    return this.anchors;
  }
  [R(294)](t) {
    return this[R(271)].has(t);
  }
  setConnections(t) {
    const e = R;
    this.anchors = /* @__PURE__ */ new Map();
    for (let n = 0; n < t.length; n++) {
      const r = t[n];
      let i = new De(r.name, r.x, r.y);
      i[e(273)] = r.usage || ah[e(284)], this.anchors[e(292)](r[e(275)], i);
    }
  }
  getConnectionAnchor(t) {
    return this[R(271)].get(t);
  }
  getConnectionAnchors() {
    const t = R;
    return this.anchors[t(269)]();
  }
  getIntersect(t, e, n) {
    const r = n._obb.points;
    return Ut.getNearestPointOnLines(t, e, r, this.isClosed);
  }
  getConnectAutoPoint(t, e, n) {
    const r = R;
    let i = { x: t, y: e }, o = { x: n._obb[r(287)].center, y: n[r(286)].aabb[r(293)] };
    return ht[r(308)](o, i, n._obb.points, this.isClosed) || o;
  }
  toJSON() {
    let t = Ks(this, this[R(307)], this._allwaysSerializers);
    return t.className = z.getObjectClassName(this), t;
  }
  static fromJSON(t) {
    const e = R;
    let n = t.namespace || t.className;
    if (z.hasShapeInstance(n)) {
      let i = z[e(306)](n);
      return Object[e(290)](i, t), i;
    }
    let r = z.newInstance(t.className);
    return Object.assign(r, t), r;
  }
  static grid(t, e) {
    return Je.grid(t, e);
  }
  static innerGrid(t, e) {
    return Je[R(277)](t, e);
  }
  static [R(289)](t) {
    return Je.circle(t);
  }
  static [R(300)](t) {
    return Je[R(300)](t);
  }
};
me.DefaultAnchors = /* @__PURE__ */ new Map(), te([p("Shape")], me.prototype, "className", 2), te([p(!0)], me.prototype, R(270), 2), te([p(32)], me.prototype, "width", 2), te([p(32)], me.prototype, "height", 2), te([p(!0)], me[R(278)], "isUnit", 2), te([p(["className"])], me[R(278)], R(274), 2), te([p(["vertices", "isClosed", "width", R(279), "vertices", R(301)])], me[R(278)], "_serializers", 2);
let rn = me;
function Ti() {
  const s = ["getFirstIntersectPoint", "6688BZcauD", "1164fCxegq", "33873697HkhQwm", "values", "isClosed", "anchors", "draw", "usage", "_allwaysSerializers", "name", "2901600NgYEYS", "innerGrid", "prototype", "height", "RegShape", "119161ARZzRI", "vertices", "scale", "CONNECT_EDIT", "PolygonShape", "_obb", "aabb", "DefaultAnchors", "circle", "assign", "rotate", "set", "middle", "hasAnchor", "381980XcgQYB", "40761HIURAE", "10WPtiUk", "length", "forEach", "polygon", "namespace", "beginPath", "408DpzCVE", "2600BzHuzG", "1855130NmkxDa", "getShape", "_serializers"];
  return (Ti = function() {
    return s;
  })();
}
class lh extends rn {
  draw(t, e) {
    console.warn("not implement draw");
  }
}
te([p(R(280))], lh.prototype, "className", 2);
class re extends rn {
  constructor(t) {
    const e = R;
    super(), this[e(270)] = !0, this.updatePoints(t);
  }
  updatePoints(t) {
    this.vertices = t, this.dirty = !0;
  }
  [R(272)](t, e) {
    const n = R, r = e._obb.localPoints;
    if (r == null || r[n(298)] == 0)
      return;
    let i = r[0];
    t[n(302)](), t.moveTo(i.x, i.y);
    for (let o = 1; o < r.length; o++)
      (r[o].x !== i.x || r[o].y !== i.y) && t.lineTo(r[o].x, r[o].y), i = r[o];
    this.isClosed && (t.fill(), t.closePath()), e._computedStyle.lineWidth > 0 && t.stroke();
  }
  [R(291)](t) {
    return this.vertices = ht.rotatePoints(this.vertices, t), this.dirty = !0, this;
  }
  [R(283)](t, e) {
    return this.vertices.forEach((n) => {
      n.x *= t, n.y *= e;
    }), this.vertices = ht.normalizePoints(this.vertices), this.dirty = !0, this;
  }
  skew(t, e) {
    const n = R;
    return this.vertices[n(299)]((r) => {
      let i = r.x, o = r.y;
      r.x = i + o * e, r.y = o + i * t;
    }), this.vertices = ht.normalizePoints(this.vertices), this.dirty = !0, this;
  }
}
function qs(s, t) {
  const e = Ti();
  return (qs = function(n, r) {
    return e[n -= 268];
  })(s, t);
}
function Ei(s, t) {
  const e = Ci();
  return (Ei = function(n, r) {
    return e[n -= 267];
  })(s, t);
}
function Ci() {
  const s = ["2809344PeLZoJ", "assign", "37260UXsZnu", "set", "12084iEEgWs", "1009780MrDElv", "2qzgqvz", "keys", "609KhhKlL", "userData", "forEach", "fromJSON", "4115811BOhEUI", "SerializeType", "addChild", "295AIHCfk", "map", "CustomStyle", "10021LQJuUp", "error", "127952qfgeNB", "path", "8966493JOKwcn"];
  return (Ci = function() {
    return s;
  })();
}
function Ss(s, t, e) {
  const n = Ei;
  let r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), a = t.Roots, h = t.DisplayObjects || [], l = t.Styles || [], c = t.Shapes || [], u = t.Resources || [], f = t[n(270)] || {};
  if (t[n(289)], h.forEach((m) => {
    const w = n;
    if (m.hasOwnProperty("userData") && !m.hasOwnProperty("data")) {
      let _ = m.userData;
      delete m[w(285)], m.data = _;
    }
    m.isLink && m.path == null && (m[w(274)] = [m.begin, m.end], delete m.begin, delete m.end);
  }), f.styles == null) {
    let m = {}, w = Object[n(283)](f);
    for (let _ = 0; _ < w.length; _++) {
      let P = w[_];
      P.startsWith(".") && (m[P] = f[P], delete f[P]);
    }
    f.styles = m;
  }
  l.forEach(function(m, w) {
    i.set(w, Jt.fromJSON(m, u));
  }), c.forEach(function(m, w) {
    const _ = n;
    let P = rn[_(287)](m);
    P != null ? (Object[_(277)](P, m), o[_(279)](w, P)) : console[_(272)]("shape not exist:", m);
  });
  let g = [];
  const y = h[n(269)](function(m, w) {
    let _;
    e != null && (_ = e.get(m)), _ == null && (_ = z.newInstance(m.className)), w < a.length && g.push(_);
    let P = { resourcesArr: u, objJson: m, styleIndexMap: i, shapeIndexMap: o };
    return _._fromJSON(P), r.set(w, _), _;
  });
  y[n(286)]((m) => {
    m.removeAllChildren();
  }), h.forEach((m, w) => {
    const _ = n;
    let P = m.parent;
    if (P == null)
      return;
    let v = r.get(P), D = y[w];
    D.parent != null && D.removeFromParent(), v[_(267)](D);
  });
  let I = h.filter((m) => m.isLink), x = y.filter((m) => m.isLink);
  return I.forEach(function(m, w) {
    x[w]._afterJson(m, r);
  }), t.EditInfo != null && s.editor != null && s.editor.fromEditInfo(t.EditInfo, y), t[n(270)] != null && s.styleSystem.fromJson(t), g;
}
te([p(R(285))], re.prototype, "className", 2), te([p(!0)], re[R(278)], "isClosed", 2), te([p(!1)], re.prototype, "dirty", 2), function() {
  const s = Ei, t = Ci();
  for (; ; )
    try {
      if (-parseInt(s(281)) / 1 + -parseInt(s(282)) / 2 * (parseInt(s(288)) / 3) + -parseInt(s(280)) / 4 * (parseInt(s(268)) / 5) + -parseInt(s(276)) / 6 + parseInt(s(284)) / 7 * (parseInt(s(273)) / 8) + -parseInt(s(275)) / 9 + -parseInt(s(278)) / 10 * (-parseInt(s(271)) / 11) === 761407)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
}();
const jt = Ai;
function Ai(s, t) {
  const e = Di();
  return (Ai = function(n, r) {
    return e[n -= 154];
  })(s, t);
}
function Di() {
  const s = ["map", "44996jZObnG", "Resources", "type", "numberFixed", "33tWlnGy", "542VhcmNW", "2971632CEoWPJ", "10114907BaTGJK", "_restoreFromState", "jsonToObjects", "stage", "9CjOCDc", "1525315pFcciS", "176152LjzGLT", "length", "8106110ecUdvY", "src", "1684yaWbey", "7VVHqiu", "objectsToJSON", "Objects"];
  return (Di = function() {
    return s;
  })();
}
(function() {
  const s = Ai, t = Di();
  for (; ; )
    try {
      if (parseInt(s(167)) / 1 * (-parseInt(s(157)) / 2) + -parseInt(s(166)) / 3 * (-parseInt(s(162)) / 4) + parseInt(s(174)) / 5 + parseInt(s(168)) / 6 + -parseInt(s(158)) / 7 * (-parseInt(s(175)) / 8) + -parseInt(s(173)) / 9 * (parseInt(s(155)) / 10) + parseInt(s(169)) / 11 === 598655)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const ch = class uh {
  constructor(t) {
    this.stage = t;
  }
  setNumberFixed(t) {
    uh.numberFixed = t;
  }
  objectsToJSON(t, e = jt(160)) {
    return Ms(this[jt(172)], t, null, e);
  }
  [jt(171)](t, e) {
    return Ss(this[jt(172)], t, e);
  }
  static getProtoDefaultProperties(t) {
    const e = jt;
    let n = t._serializers, r = Object.getPrototypeOf(t), i = {};
    for (let o = 0; o < n[e(154)]; o++) {
      let a = n[o], h = r[a], l = t[a];
      l === h && (i[a] = l);
    }
    return i;
  }
  componentToObjects(t) {
    const e = jt;
    let n = JSON.parse(t);
    return Ss(this[e(172)], n);
  }
  objectsToComponent(t) {
    let e = this[jt(159)](t);
    return JSON.stringify(e);
  }
  fillByJson(t, e) {
    const n = jt;
    let r = this, i = (t[n(163)] || []).filter((o) => o[n(164)] == "img")[n(161)]((o) => o[n(156)]);
    return new Promise((o, a) => {
      const h = n;
      if (i[h(154)] == 0)
        return r[h(170)](t, e), void o(!0);
      dt.whenAllImagesLoaded(i).then(() => {
        r[h(170)](t, e), o(!0);
      }).catch((l) => {
        a(l);
      });
    });
  }
  _getState(t, e) {
    return Ms(this[jt(172)], [t], e, "Layer");
  }
  [jt(170)](t, e) {
    return Ss(this[jt(172)], t, e);
  }
};
ch[jt(165)] = 6;
let Ns = ch;
function Ni() {
  const s = ["set", "numberFixed", "map", "Styles", "serializeable", "160998ypUrRh", "concat", "src", "className", "indexOf", "style", "editor", "24567433gdPivU", "resources", "101869KNMngF", "customStyleToJSON", "193959UcQAGD", "1122420XiwVpc", "forEach", "push", "Resources", "flatten", "15LLMTvH", "2002434jZbbSF", "length", "8xXPYVY", "getEmptyInstance", "596130YPZrbu", "_beforeToJSON", "stringify", "shapes", "168cJdQbp", "28NesQYo"];
  return (Ni = function() {
    return s;
  })();
}
function Ms(s, t, e, n) {
  const r = Ln;
  t = t.filter((h) => h[r(240)]);
  const i = {};
  i.version = Rs;
  const o = function(h) {
    const l = Ln;
    let c = [];
    h[l(227)] > 0 && (c = lt.flatten(h[0].children));
    for (let w = 1; w < h.length; w++) {
      let _ = lt[l(224)](h[w].children, (P) => P[l(240)]);
      c = c.concat(_);
    }
    let u = h[l(242)](c), f = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map(), I = /* @__PURE__ */ new Map(), x = [], m = { objects: u, objIndexMap: f, styleIndexMap: g, styles: [], resourcesIndexMap: I, resources: x, shapeIndexMap: y, shapes: [], indexImage: function(w) {
      const _ = l;
      let P = I.get(w);
      if (P != null)
        return P;
      if (w instanceof HTMLImageElement) {
        let v = { type: "img", src: w.getAttribute(_(243)) };
        return x[_(222)](v), P = x.length - 1, I[_(236)](w, P), P;
      }
      throw new Error("createImageIndex error");
    } };
    return u[l(221)]((w, _) => {
      w[l(231)](m), f.set(w, _);
    }), m;
  }(t);
  let a = o.objects;
  if (i.Roots = t[r(238)]((h, l) => l), i.Styles = o.styles, i.Shapes = o[r(233)], i[r(223)] = o[r(216)], i.DisplayObjects = a[r(238)](function(h) {
    let l = h._toJSON(o);
    return e != null && e.set(l, h), l;
  }), t.length > 0 && s[r(214)] != null) {
    let h = s.editor.getEditInfo(a, o.objIndexMap);
    h != null && (i.EditInfo = h);
  }
  return n == "Stage" && (i.CustomStyle = s.styleSystem[r(218)](o.indexImage)), i.SerializeType = n, i;
}
function Ks(s, t, e) {
  const n = Ln;
  let r = z.getObjectClassName(s), i = z[n(229)](r), o = {};
  if (e)
    for (let a = 0; a < e.length; a++) {
      let h = e[a];
      if (h == n(244)) {
        o[h] = r;
        continue;
      }
      let l = s[h];
      o[h] = l;
    }
  for (let a = 0; a < t.length; a++) {
    let h = t[a], l = s[h];
    if (l != i[h]) {
      if (Array.isArray(l) && Array.isArray(i[h])) {
        if (Kh(i[h], l))
          continue;
        o[h] = l;
      }
      l != null && (typeof l == "number" && Ns.numberFixed != null && (l = qh(l, Ns[n(237)])), l.toJSON instanceof Function && (l = l.toJSON())), o[h] = l;
    }
  }
  return o;
}
function qh(s, t) {
  const e = Ln;
  if (Number.isInteger(s))
    return s;
  let n = s.toString();
  return n.length - n[e(245)](".") - 1 > t && (s = s.toFixed(t), s = parseFloat(s)), s;
}
function Ln(s, t) {
  const e = Ni();
  return (Ln = function(n, r) {
    return e[n -= 213];
  })(s, t);
}
function Kh(s, t) {
  if (s === t)
    return !0;
  if (s.length != t.length)
    return !1;
  for (let e = 0; e < s.length; e++)
    if (s[e] != t[e])
      return !1;
  return !0;
}
(function() {
  const s = Ln, t = Ni();
  for (; ; )
    try {
      if (parseInt(s(217)) / 1 * (-parseInt(s(228)) / 2) + -parseInt(s(241)) / 3 * (parseInt(s(235)) / 4) + parseInt(s(225)) / 5 * (-parseInt(s(230)) / 6) + -parseInt(s(226)) / 7 + -parseInt(s(234)) / 8 * (parseInt(s(219)) / 9) + -parseInt(s(220)) / 10 + parseInt(s(215)) / 11 === 301325)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const ue = Ri;
(function() {
  const s = Ri, t = Mi();
  for (; ; )
    try {
      if (-parseInt(s(279)) / 1 + parseInt(s(293)) / 2 * (parseInt(s(275)) / 3) + parseInt(s(273)) / 4 * (parseInt(s(290)) / 5) + parseInt(s(281)) / 6 + parseInt(s(291)) / 7 + parseInt(s(288)) / 8 * (parseInt(s(274)) / 9) + -parseInt(s(286)) / 10 === 292490)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Qh = Object[ue(268)], Zh = Object.getOwnPropertyDescriptor, Cn = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? Zh(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && Qh(t, e, i), i;
};
function Mi() {
  const s = ["shapeSize", "isClosed", "122220ZenKPT", "atan2", "2307306rUSwVn", "center", "lineTo", "Ellipse", "moveTo", "9595440FtybCs", "arrowsSize", "230216vzwUGW", "rect", "314645oSRYST", "2449986mgessb", "isUnit", "163148EYGkny", "_obb", "draw", "sin", "defineProperty", "dist", "aabb", "width", "lineWidth", "12ZIyXHs", "90MuzwoL", "6dUdnbT", "_drawContentDesc"];
  return (Mi = function() {
    return s;
  })();
}
class Qs extends re {
  constructor() {
    const t = ue;
    super([{ x: -1, y: -1 }, { x: 1, y: -1 }, { x: 1, y: 1 }, { x: -1, y: 1 }]), this[t(278)] = !0, this[t(292)] = !1;
  }
  [ue(295)](t, e) {
    const n = ue;
    let r = e[n(276)].shapeSize, i = e._computedStyle.lineWidth;
    t.beginPath(), t[n(289)](-r.width / 2, -r.height / 2, r[n(271)], r.height), t.fill(), i > 0 && t.stroke();
  }
}
Cn([p("Rect")], Qs.prototype, "className", 2);
class zi extends rn {
  constructor() {
    super();
  }
  draw(t, e) {
    const n = ue;
    let r = e._drawContentDesc[n(277)];
    t.beginPath(), t.ellipse(0, 0, r.width / 2, r.height / 2, 0, 0, 2 * Math.PI), t.fill(), e._computedStyle.lineWidth > 0 && t.stroke();
  }
  getIntersect(t, e, n) {
    const r = ue, i = 0.5 * n[r(294)].aabb[r(271)], o = 0.5 * n[r(294)].aabb.height, a = n._obb[r(270)].center, h = n._obb.aabb.middle;
    let l = t - a, c = e - h, u = Math[r(280)](c * i, l * o), f = { x: a + i * Math.cos(u), y: h + o * Math[r(296)](u) }, g = t - f.x, y = e - f.y, I = Math.sqrt(g * g + y * y), x = new sn(f.x, f.y);
    return x.t = u / (2 * Math.PI), x[r(269)] = I, x;
  }
  getConnectAutoPoint(t, e, n) {
    const r = ue, i = 0.5 * n[r(294)].aabb[r(271)], o = 0.5 * n._obb.aabb.height, a = n._obb[r(270)][r(282)], h = n[r(294)].aabb.middle;
    let l = t - a, c = e - h, u = Math.atan2(c * i, l * o);
    return { x: a + i * Math.cos(u), y: h + o * Math[r(296)](u) };
  }
}
Cn([p(ue(284))], zi.prototype, "className", 2);
class Bi extends re {
  constructor() {
    super([{ x: -1, y: -1 }, { x: 1, y: 0 }, { x: -1, y: 1 }]);
  }
}
Cn([p("Triangle")], Bi.prototype, "className", 2);
class ji extends re {
  constructor() {
    super([{ x: -1, y: -1 }, { x: 1, y: 0 }, { x: -1, y: 1 }, { x: 1, y: 0 }, { x: -1, y: 0 }]), this.isClosed = !1;
  }
  draw(t, e) {
    const n = ue;
    let r = e._drawContentDesc.shapeSize, i = e._computedStyle[n(272)], o = r.width / 2, a = r.height / 2;
    t.beginPath(), t[n(285)](-o, -a), t[n(283)](o, 0), t.lineTo(-o, a), t[n(285)](-o - 0.5 * i, 0), t[n(283)](o, 0), i > 0 && t.stroke();
  }
}
Cn([p("Arrow")], ji.prototype, "className", 2);
class Wi extends re {
  constructor() {
    super([{ x: 0, y: -1 }, { x: 1, y: 0 }, { x: 0, y: 1 }, { x: -1, y: 0 }]);
  }
}
function Ri(s, t) {
  const e = Mi();
  return (Ri = function(n, r) {
    return e[n -= 268];
  })(s, t);
}
Cn([p("Diamond")], Wi.prototype, "className", 2);
class Fi extends Qs {
  constructor() {
    super();
  }
  draw(t, e) {
    const n = ue;
    let r = e[n(287)], i = 0.5 * -e.width, o = 0.5 * -e.height, a = e.width, h = e.height - r;
    t.beginPath(), t[n(285)](i, o), t.lineTo(i + a, o), t.lineTo(i + a, o + h), t.lineTo(r - 2 + 0, o + h), t.lineTo(0, o + h + r), t.lineTo(0 - (r - 2), o + h), t.lineTo(i, o + h), t.lineTo(i, o), t.fill(), e._computedStyle.lineWidth > 0 && t.stroke();
  }
}
function Zs(s, t) {
  const e = Hi();
  return (Zs = function(n, r) {
    return e[n -= 302];
  })(s, t);
}
Cn([p("Tip")], Fi.prototype, "className", 2);
const zn = Zs;
function Hi() {
  const s = ["width", "updateMatrix", "assign", "1035318XQWSPk", "309093dUkyph", "fillStyle", "strokeStyle", "1888144kQavIi", "6Qcroyw", "910950FSePvC", "3138184EAQnmu", "getShapes", "getShape", "translate", "_sysRegClass", "36AwLzMo", "1674595vLvnln", "4319455CSSOSi", "restore", "_computedStyle"];
  return (Hi = function() {
    return s;
  })();
}
(function() {
  const s = Zs, t = Hi();
  for (; ; )
    try {
      if (-parseInt(s(311)) / 1 + -parseInt(s(310)) / 2 + parseInt(s(316)) / 3 + -parseInt(s(317)) / 4 + parseInt(s(303)) / 5 * (parseInt(s(315)) / 6) + parseInt(s(304)) / 7 + parseInt(s(314)) / 8 * (parseInt(s(302)) / 9) === 588408)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class ph {
  constructor() {
    const t = Zs;
    z._sysRegClass(Qs), z._sysRegClass(zi), z._sysRegClass(Bi), z._sysRegClass(ji), z._sysRegClass(Wi), z[t(321)](Fi), z[t(321)](re);
  }
  [zn(318)](t) {
    return z[zn(318)](t);
  }
  [zn(319)](t) {
    const e = zn;
    return z.hasShapeInstance(t) ? z[e(319)](t) : z.getEmptyInstance(t);
  }
  drawToCanvas(t, e, n = { size: 42, strokeStyle: "gray", fillStyle: "white", padding: 0 }) {
    const r = zn;
    let i = n.size || 42, o = i, a = i, h = e.getContext("2d");
    h.save(), h[r(313)] = n[r(313)] || "gray", h[r(312)] = n[r(312)] || "white", h[r(320)](e[r(307)] / 2, e.height / 2);
    let l = z.newInstance("ShapeNode");
    return Object[r(309)](l, { x: 0, y: 0, width: o, height: a }), l.setShape(t), Object.assign(l[r(306)], { lineWidth: 1, padding: n.padding || 0 }), l[r(308)](), l._updateShapeSize(), t.draw(h, l), h[r(305)](), e;
  }
}
const hs = new ph(), Bn = Xi;
function Xi(s, t) {
  const e = Yi();
  return (Xi = function(n, r) {
    return e[n -= 115];
  })(s, t);
}
function Yi() {
  const s = ["indexOf", "691634ExCdkX", "12527919lyJOdo", "splice", "3033780TFxtbL", "3licTAB", "267280jXhWLn", "67944ddEgeM", "1113IqrSpM", "1850KSJpxG", "951974SQPZss", "remove", "66McxOAG", "removeAt", "length", "21032hFOFzM"];
  return (Yi = function() {
    return s;
  })();
}
(function() {
  const s = Xi, t = Yi();
  for (; ; )
    try {
      if (parseInt(s(121)) / 1 + parseInt(s(128)) / 2 * (-parseInt(s(116)) / 3) + -parseInt(s(115)) / 4 + parseInt(s(117)) / 5 * (parseInt(s(123)) / 6) + parseInt(s(119)) / 7 * (parseInt(s(118)) / 8) + -parseInt(s(129)) / 9 + -parseInt(s(120)) / 10 * (-parseInt(s(126)) / 11) === 747844)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class At {
  static [Bn(124)](t, e) {
    return t[Bn(130)](e, 1);
  }
  static [Bn(122)](t, e) {
    const n = Bn;
    let r = t[n(127)](e);
    return r == -1 ? -1 : (t[n(130)](r, 1), r);
  }
  static swapWithRight(t, e) {
    const n = e.indexOf(t);
    if (n === e.length - 1)
      return !1;
    const r = e[n + 1];
    return e[n] = r, e[n + 1] = t, !0;
  }
  static swapWithLeft(t, e) {
    const n = e.indexOf(t);
    if (n === 0)
      return !1;
    const r = e[n - 1];
    return e[n] = r, e[n - 1] = t, !0;
  }
  static moveToTail(t, e) {
    const n = Bn, r = e[n(127)](t);
    if (r === e.length - 1)
      return console.log("已经在末尾"), !1;
    e[r - 1];
    const i = e[r];
    for (let o = r; o < e[n(125)] - 1; o++)
      e[o] = e[o + 1];
    return e[e.length - 1] = i, !0;
  }
  static moveToHead(t, e) {
    const n = e.indexOf(t);
    if (n === 0)
      return !1;
    const r = e[n];
    for (let i = n; i > 0; i--)
      e[i] = e[i - 1];
    return e[0] = r, !0;
  }
}
var Xt = Ji;
function Ui() {
  var s = ["_matrixDirty", "visible", "664974ynjHWQ", "_visible", "312MSEhRz", "getOwnPropertyDescriptor", "499905iIVoZJ", "136qbGHAR", "listeners", "isVisible", "getWorldTransform", "_localTransform", "2911580yAwOSM", "619196xsprjs", "hide", "destroyed", "486185cgitcR", "_state", "4196nOQWRv", "3VNosds", "prototype", "66753rPkMoR"];
  return (Ui = function() {
    return s;
  })();
}
function Ji(s, t) {
  var e = Ui();
  return (Ji = function(n, r) {
    return e[n -= 485];
  })(s, t);
}
(function() {
  for (var s = Ji, t = Ui(); ; )
    try {
      if (-parseInt(s(494)) / 1 * (parseInt(s(505)) / 2) + -parseInt(s(495)) / 3 * (-parseInt(s(489)) / 4) + parseInt(s(492)) / 5 + parseInt(s(500)) / 6 + parseInt(s(504)) / 7 + parseInt(s(502)) / 8 * (parseInt(s(497)) / 9) + -parseInt(s(488)) / 10 === 147057)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var $h = Object.defineProperty, tl = Object[Xt(503)], xr = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? tl(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && $h(t, e, i), i;
};
class ks extends _e {
  constructor() {
    var t = Xt;
    super(), this._matrixDirty = !0, this[t(493)] = { _needPaint: !0, _isOutOfViewport: !1, _attrDirty: !0 }, this[t(487)] = It.allocate(), this._worldTransform = It.allocate(), this._obb = new ce();
  }
  _getLocalTransform() {
    let t = this._localTransform;
    return t.identity(), this._doTransform(t), t;
  }
  [Xt(486)]() {
    return this._worldTransform;
  }
  markDirty() {
    this._matrixDirty = !0;
  }
  get visible() {
    return this._visible;
  }
  set [Xt(499)](t) {
    var e = Xt;
    this._visible = t, this[e(498)] = !0;
  }
  show() {
    return !this.visible && (this.visible = !0), this;
  }
  [Xt(490)]() {
    var t = Xt;
    return this.visible && (this[t(499)] = !1), this;
  }
  [Xt(485)]() {
    return this.visible;
  }
  destroy() {
    var t = Xt;
    this[t(499)] = !1, this[t(506)] = null, this[t(491)] = !0;
  }
}
xr([p(!0)], ks[Xt(496)], Xt(501), 2), xr([p(!1)], ks.prototype, "painted", 2), xr([p(!1)], ks[Xt(496)], "destroyed", 2);
const d = $s;
(function() {
  const s = $s, t = Vi();
  for (; ; )
    try {
      if (parseInt(s(529)) / 1 + parseInt(s(505)) / 2 * (parseInt(s(556)) / 3) + parseInt(s(540)) / 4 * (parseInt(s(518)) / 5) + parseInt(s(447)) / 6 * (parseInt(s(483)) / 7) + parseInt(s(515)) / 8 + parseInt(s(536)) / 9 * (parseInt(s(503)) / 10) + -parseInt(s(545)) / 11 === 342827)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var el = Object.defineProperty, nl = Object[d(458)], Y = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? nl(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && el(t, e, i), i;
};
function $s(s, t) {
  const e = Vi();
  return ($s = function(n, r) {
    return e[n -= 445];
  })(s, t);
}
const X = class Fn extends ks {
  constructor() {
    super(), this._x = 0, this._y = 0, this.data = {}, this.attributes = {}, this.children = [], this.style = new Jt(), this._computedStyle = new Jt(), this.classList = [], this.inLinks = [], this.outLinks = [];
  }
  translate(t, e) {
    return this.x = t, this.y = e, this;
  }
  scale(t, e) {
    return this.scaleX = t, this.scaleY = e, this;
  }
  rotate(t) {
    return this.rotation = t, this;
  }
  setAttributes(t) {
    return this._state._attrDirty = !0, Object.assign(this.attributes, t), this;
  }
  removeAttribute(t) {
    const e = d;
    delete this.attributes[t], this[e(455)]._attrDirty = !0;
  }
  setAttribute(t, e) {
    const n = d;
    this.attributes[t] = e, this[n(455)][n(501)] = !0;
  }
  [d(544)](t, e) {
    let n = this.attributes[t];
    return n ?? e;
  }
  getAABB(t) {
    const e = d;
    if (this._matrixDirty && this.updateMatrix(), t != 1)
      return this._obb.aabb;
    let n = Fn.flatten([this]).map((r) => r._obb[e(516)]);
    return O.unionRects(n);
  }
  [d(535)](t) {
    const e = d;
    if (this[e(550)](K.EventInstances.dragEvent), this.pointerEnabled == 0 || this.draggable == 0)
      return;
    let n = this.parent.getWorldTransform()[e(473)]().vec([1, 1], [t.dxInWorld, t.dyInWorld]);
    this.translateWith(n[0], n[1]);
  }
  getShape() {
    return this._shape;
  }
  getStyle(t) {
    return this[d(555)][t];
  }
  css(t) {
    return this[d(531)](t);
  }
  setStyles(t) {
    const e = d;
    return Object.assign(this[e(555)], t), this.style[e(479)] = !0, this;
  }
  [d(521)](t, e) {
    const n = d;
    return this.style[t] = e, this[n(555)].dirty = !0, this;
  }
  [d(524)]() {
    return this[d(492)];
  }
  [d(467)]() {
    const t = d;
    let e = Object.keys(this.style);
    for (let n = 0; n < e.length; n++) {
      let r = e[n];
      r != t(479) && delete this.style[r];
    }
    return this[t(555)].dirty = !0, this;
  }
  addClass(t) {
    const e = d;
    if (t.charAt(0) !== ".")
      throw new Error('error: style class must be startWith "."');
    return At.remove(this.classList, t), this.classList[e(566)](t), this.style.dirty = !0, this;
  }
  [d(502)](t) {
    At[d(474)](this.classList, t), this.style.dirty = !0;
  }
  hasClass(t) {
    const e = d;
    return this.classList[e(554)](t) != -1;
  }
  removeAllClass() {
    return this[d(558)].length = 0, this.style.dirty = !0, this;
  }
  [d(537)]() {
    return this.inLinks.length > 0 || this.outLinks.length > 0;
  }
  [d(539)](t, e) {
    let n = this.getLocalPoint(t, e);
    return n.x += this.x, n.y += this.y, n;
  }
  [d(568)](t, e) {
    const n = d;
    let r = this._obb.localPoints;
    if (r == null && (r = this._getOBBPoints()), e != null) {
      let i = this._shape.isClosed ? r.length : r.length - 1;
      if (e > i)
        throw console.log(e, i), new Error("segIndex out of bounds.");
      let o = e + 1;
      o == r.length && (o = 0);
      let a = r[e], h = r[o];
      if (a == null || h == null)
        throw console[n(506)](a, h, r), console[n(506)](t, e, o), new Error("beginPoint or endPoint is null");
      r = [a, h];
    }
    return A[n(541)](r, t, this[n(466)][n(484)]);
  }
  _findChildren(t, e = !1) {
    const n = d;
    let r = this[n(520)], i = [];
    for (let o = 0; o < r[n(551)]; o++) {
      let a = r[o];
      if (t(a) && i[n(566)](a), e) {
        let h = a._findChildren(t, e);
        i = i.concat(h);
      }
    }
    return i;
  }
  [d(471)](t, e = !1) {
    let n = this.children;
    for (let r = 0; r < n.length; r++) {
      let i = n[r];
      if (t(i))
        return i;
      if (e) {
        let o = i._findChild(t, e);
        if (o != null)
          return o;
      }
    }
    return null;
  }
  querySelectorAll(t) {
    const e = d;
    let n = ja(t);
    return this[e(452)](n, !0);
  }
  querySelector(t) {
    const e = d;
    let n = ja(t);
    return this[e(471)](n, !0);
  }
  getInLinks() {
    return this.inLinks;
  }
  getOutLinks() {
    return this.outLinks;
  }
  pointerdownHandler(t) {
    const e = d;
    this.pointerEnabled == 1 && this.dispatchEvent(K[e(526)].pointerdownEvent);
  }
  [d(457)](t) {
    this.pointerEnabled == 1 && this.dispatchEvent(K.EventInstances.pointerupEvent);
  }
  [d(486)](t) {
    this[d(498)] == 1 && this.dispatchEvent(K.EventInstances.pointermoveEvent);
  }
  pointerenterHandler(t) {
    const e = d;
    this.pointerEnabled == 1 && this.dispatchEvent(K.EventInstances[e(565)]);
  }
  [d(487)](t) {
    this.pointerEnabled == 1 && this.dispatchEvent(K.EventInstances.pointeroutEvent);
  }
  [d(552)](t) {
    this.pointerEnabled == 1 && this.dispatchEvent(K.EventInstances.dragEndEvent);
  }
  [d(569)](t) {
    const e = d;
    this.pointerEnabled == 1 && this.dispatchEvent(K[e(526)].clickEvent);
  }
  [d(562)](t) {
    this.pointerEnabled == 1 && this.dispatchEvent(K.EventInstances.dblclickEvent);
  }
  [d(559)](t) {
    const e = d;
    this.dispatchEvent(K.EventInstances[e(508)]);
  }
  dragoverHandler(t) {
    const e = d;
    this.dispatchEvent(K[e(526)].dropoverEvent);
  }
  dragoutHandler(t) {
    this[d(550)](K.EventInstances.dropoutEvent);
  }
  selectedHandler() {
    const t = d;
    this.pointerEnabled == 1 && (this.isSelected = !0, this._matrixDirty = !0, this.dispatchEvent(K.EventInstances[t(482)]));
  }
  unselectedHandler() {
    const t = d;
    this._matrixDirty = !0, this.isSelected = !1, this[t(498)] == 1 && this.dispatchEvent(K.EventInstances[t(512)]);
  }
  appendChild(t) {
    const e = d;
    this._matrixDirty = !0;
    let n = this;
    if (t.parent != null)
      throw console.log(t), new Error("child already has parent");
    if (n === t)
      throw console.log(n), new Error(e(472));
    return t.parent = n, t.deep = n.deep + 1, n.ownerLayer && (t.ownerLayer = n[e(460)]), t.ownerLayer != null && (t.ownerLayer._treeDirty = !0), n[e(520)].push(t), t.hasChildren() && t._updateTree(!0), this;
  }
  sortChildren(t) {
    const e = d;
    return this[e(520)].sort(t), this[e(456)] = !0, this.ownerLayer && (this.ownerLayer[e(557)] = !0), this;
  }
  _updateTree(t = !1) {
    const e = d;
    if (this[e(520)][e(551)] <= 0)
      return;
    const n = this.children;
    for (let r = 0; r < n.length; r++) {
      const i = n[r];
      i._matrixDirty = !0, i.deep = this[e(494)] + 1, i.ownerLayer = this[e(460)], t && i._updateTree(t);
    }
  }
  getChildren() {
    return this[d(520)];
  }
  hasChild(t) {
    return this.children.indexOf(t) != -1;
  }
  hasChildren() {
    return this[d(520)].length > 0;
  }
  [d(533)]() {
    return this.parent && this.parent.removeChild(this), this;
  }
  append(...t) {
    const e = d;
    for (let n = 0; n < t.length; n++) {
      let r = t[n];
      r.parent = this, this[e(494)] < K.MinDeep && (r.ownerLayer = this, r[e(460)]._treeDirty = !0), this.children.push(r);
    }
    return this[e(456)] = !0, this._updateTree(!0), this;
  }
  prepend(...t) {
    const e = d;
    for (let n = 0; n < t.length; n++) {
      let r = t[n];
      r.parent = this, this.deep < K.MinDeep && (r.ownerLayer = this, r[e(460)]._treeDirty = !0), this.children.unshift(r);
    }
    return this._matrixDirty = !0, this._updateTree(!0), this;
  }
  removeChild(t) {
    const e = d;
    t._matrixDirty = !0, this._matrixDirty = !0, t.ownerLayer && (t.ownerLayer._treeDirty = !0), t.ownerLayer = null, t.parent = null;
    let n = this.children.indexOf(t);
    return n != -1 && (At.removeAt(this.children, n), t[e(451)]() && t._updateTree(!0)), this;
  }
  removeChildren(t) {
    const e = d;
    this[e(456)] = !0;
    for (let n = 0; n < t.length; n++) {
      let r = t[n];
      r._matrixDirty = !0, r[e(460)] && (r.ownerLayer._treeDirty = !0), r[e(460)] = null, r.parent = null;
      let i = this.children[e(554)](r);
      i != -1 && At[e(561)](this.children, i);
    }
    return this[e(528)](!0), this;
  }
  removeAllChildren() {
    let t = this[d(520)].slice();
    for (let e = 0; e < t.length; e++)
      this.removeChild(t[e]);
    return this;
  }
  hideAllChildren() {
    return this.children.forEach(function(t) {
      t.hide();
    }), this;
  }
  [d(459)]() {
    return this.children.forEach(function(t) {
      t.show();
    }), this;
  }
  [d(478)](t) {
    const e = d;
    let n = (t ? Fn[e(499)](this[e(520)]) : this.children)[e(445)]((r) => r._obb.aabb);
    return O.unionRects(n);
  }
  getRoot() {
    const t = d;
    let e = this;
    for (; e.parent != null; )
      e = e[t(465)];
    return e;
  }
  worldToLocalXY(t, e) {
    return this.getWorldTransform().invert().pointXY(t, e);
  }
  localToWorldXY(t, e) {
    const n = d;
    return this.getWorldTransform()[n(481)](t, e);
  }
  addInLink(t) {
    const e = d;
    return this.inLinks == null && (this.inLinks[e(551)] = 0), this.inLinks.push(t), this;
  }
  addOutLink(t) {
    return this.outLinks.push(t), this._matrixDirty = !0, t._matrixDirty = !0, this;
  }
  removeInLink(t) {
    return At[d(474)](this.inLinks, t), this._matrixDirty = !0, t._matrixDirty = !0, this;
  }
  removeOutLink(t) {
    const e = d;
    return At.remove(this[e(514)], t), this._matrixDirty = !0, t._matrixDirty = !0, this;
  }
  [d(449)]() {
    const t = d;
    let e = [];
    return this.inLinks && (e = e.concat(this.inLinks)), this[t(514)] && (e = e[t(453)](this.outLinks)), e;
  }
  getOBB() {
    return this._obb;
  }
  updateMatrix() {
    const t = d;
    this._localTransform[t(476)](), this._doTransform(this._localTransform), this.parent != null ? It[t(548)](this._worldTransform, this[t(465)]._worldTransform, this[t(489)]) : It.fillFrom(this._worldTransform, this[t(489)].m), this.isLink && It[t(473)](this._invertWorldTransform, this[t(496)]);
    let e = this._obb;
    e.localPoints = this[t(543)]();
    let n = this._worldTransform[t(493)](e.points, e[t(549)]);
    if (this.isLink) {
      let r = this[t(497)]();
      ce.toAABB(e.aabb, n, r);
    } else
      ce.toAABB(e.aabb, n);
    return this._afterUpdateMatrix(), this;
  }
  _afterUpdateMatrix() {
  }
  [d(527)]() {
  }
  _clearMatrixDirtyMark() {
    this._matrixDirty = !1;
  }
  getK(t, e = null) {
    const n = d;
    let r = this.getPoint(t - 1e-6, e), i = this[n(539)](t + 1e-6, e), o = i.x - r.x, a = i.y - r.y;
    return Math.atan2(a, o);
  }
  isOutOfParent() {
    const t = d;
    let e = this, n = e.parent;
    if (n != null && n[t(465)] != null) {
      const r = e._obb.aabb;
      return !n._obb.aabb.isIntersectRect(r);
    }
    return !1;
  }
  contains(t) {
    const e = d;
    if (t === this || this.children.includes(t))
      return !0;
    for (let n = 0; n < this.children[e(551)]; n++)
      if (this.children[n][e(511)](t))
        return !0;
    return !1;
  }
  pickable() {
    return this[d(498)];
  }
  destroy() {
    const t = d;
    super.destroy(), this[t(498)] = !1, this.inLinks[t(513)]((e) => {
      e.unlinkEnd();
    }), this.outLinks.forEach((e) => {
      e.unlinkBegin();
    }), this.inLinks[t(551)] = 0, this.outLinks.length = 0, this.parent && this[t(465)].removeChild(this), this.name = null, this.style = null, this.children.length = 0, this._localTransform.release(), this._worldTransform.release(), this._invertWorldTransform && this._invertWorldTransform[t(470)](), this._obb.points[t(551)] = 0, this[t(519)] = null, this.data = null, this.attributes[t(551)] = 0, this._state = null;
  }
  static [d(499)](t, e, n) {
    const r = d;
    let i = [];
    if (n) {
      let o = [];
      for (let a = 0; a < t[r(551)]; a++) {
        let h = t[a];
        h[r(465)] != null && (e == null || e(h) == 1) && (o[r(566)](h), i[r(566)](h));
      }
      for (let a = 0; a < o.length; a++) {
        let h = o[a];
        if (h[r(465)] != null && h[r(520)] && h.children[r(551)] > 0) {
          let l = Fn.flatten(h[r(520)], e, n);
          i = i.concat(l);
        }
      }
      return i;
    }
    for (let o = 0; o < t[r(551)]; o++) {
      let a = t[o];
      if (a.parent != null && (e == null || e(a) == 1) && (i.push(a), a.children && a.children.length > 0)) {
        let h = Fn[r(499)](a.children, e);
        i = i.concat(h);
      }
    }
    return i;
  }
  toJSON() {
    return this._toJSON();
  }
  [d(462)](t) {
    const e = d;
    let n = Ks(this, this[e(464)], this._allwaysSerializers);
    if (t != null) {
      let r = t.objIndexMap, i = t.styleIndexMap;
      if (r) {
        let o = i[e(468)](this[e(555)]);
        o != null && (n[e(555)] = o);
      }
      if (r && this.parent != null) {
        let o = r.get(this.parent);
        o != null && (n.parent = o);
      }
    }
    return n.data != null && (Object.keys(n.data).length == 0 ? delete n.data : n.data = JSON[e(469)](JSON[e(491)](n.data))), n.attributes != null && (Object.keys(n.attributes).length == 0 ? delete n[e(547)] : n.attributes = JSON.parse(JSON.stringify(n.attributes))), n;
  }
  _beforeToJSON(t) {
    const e = d;
    let n = this.style;
    if (t.styleIndexMap[e(468)](n) == null) {
      let r = n.toJSON(t.indexImage);
      if (Object[e(450)](r)[e(551)] > 0) {
        let i = t[e(546)][e(551)];
        t.styleIndexMap[e(517)](n, i), t[e(546)].push(r);
      }
    }
  }
  _fromJSON(t) {
    const e = d, n = this, r = t.objJson;
    let i = n._serializers, o = Object.getPrototypeOf(n);
    if (i.forEach((a) => {
      const h = $s;
      if (r[h(463)](a)) {
        let l = Object.getOwnPropertyDescriptor(n, a);
        if (l == null && (l = Object.getOwnPropertyDescriptor(o, a)), l != null && l.writable == 0)
          return;
        let c = r[a];
        c != null && c[h(530)] != null && (c = z.newInstance(c.className), Object.assign(n, c)), n[a] = c;
      }
    }), t[e(538)][e(555)] != null) {
      let a = t.styleIndexMap.get(t.objJson.style);
      n[e(555)] = a;
    }
  }
  update() {
    const t = d;
    this.ownerLayer != null && (this.ownerLayer[t(522)] = !0);
  }
  addEventListener(t, e) {
    super.addEventListener(t, e);
  }
  [d(542)](t, e) {
    super.removeEventListener(t, e);
  }
  getConnectAutoPoint(t) {
    const e = d;
    return this._shape[e(523)](t.x, t.y, this);
  }
  get x() {
    return this._x;
  }
  set x(t) {
    const e = d;
    this._x !== t && (this[e(456)] = !0), this._x = t;
  }
  get y() {
    return this._y;
  }
  set y(t) {
    this._y !== t && (this._matrixDirty = !0), this._y = t;
  }
  get z() {
    return this._z;
  }
  set z(t) {
    const e = d;
    this._z !== t && (this[e(456)] = !0), this._z = t;
  }
  get width() {
    return this._width;
  }
  set [d(532)](t) {
    this.width !== t && (this._matrixDirty = !0), this._width = t;
  }
  get height() {
    return this[d(510)];
  }
  set [d(461)](t) {
    this._height !== t && (this._matrixDirty = !0), this._height = t;
  }
  get rotation() {
    return this._rotation;
  }
  set rotation(t) {
    this._rotation !== t && (this._matrixDirty = !0), this._rotation = t;
  }
  get scaleX() {
    return this._scaleX;
  }
  set [d(485)](t) {
    const e = d;
    t == 0 && (t = 1e-6), this._scaleX !== t && (this._matrixDirty = !0), this[e(446)] = t;
  }
  get scaleY() {
    return this[d(488)];
  }
  set scaleY(t) {
    t == 0 && (t = 1e-6), this._scaleY !== t && (this._matrixDirty = !0), this._scaleY = t;
  }
  get [d(509)]() {
    return this[d(490)];
  }
  set skewX(t) {
    const e = d;
    this[e(490)] !== t && (this[e(456)] = !0), this._skewX = t;
  }
  get skewY() {
    return this._skewY;
  }
  set skewY(t) {
    const e = d;
    this._skewY !== t && (this[e(456)] = !0), this._skewY = t;
  }
  get left() {
    const t = d;
    return this.x - 0.5 * this[t(532)];
  }
  set left(t) {
    const e = d;
    this.x = t + 0.5 * this[e(532)];
  }
  get right() {
    const t = d;
    return this.x + 0.5 * this[t(532)];
  }
  set [d(564)](t) {
    this.x = t - 0.5 * this.width;
  }
  get top() {
    return this.y - 0.5 * this.height;
  }
  set [d(507)](t) {
    const e = d;
    this.y = t + 0.5 * this[e(461)];
  }
  get [d(553)]() {
    const t = d;
    return this.y + 0.5 * this[t(461)];
  }
  set [d(553)](t) {
    this.y = t - 0.5 * this.height;
  }
  set zIndex(t) {
    this._zIndex = t, this.setZIndex(t);
  }
  get zIndex() {
    return this._zIndex;
  }
  setZIndex(t) {
    const e = d;
    this._zIndex = t, this.parent && this.parent[e(534)](), this[e(456)] = !0;
  }
  updateZIndex() {
    return this.sortChildren((t, e) => t.zIndex - e.zIndex);
  }
  [d(475)](t) {
    return this.append(...t);
  }
  [d(500)](t) {
    return this.appendChild(t);
  }
};
Y([p("NE")], X[d(495)], "className", 2), Y([p(!0)], X.prototype, "pointerEnabled", 2), Y([p(!1)], X[d(495)], "isLayer", 2), Y([p(!0)], X.prototype, "serializeable", 2), Y([p(0)], X[d(495)], "_x", 2), Y([p(0)], X[d(495)], "_y", 2), Y([p(1)], X.prototype, d(567), 2), Y([p(1)], X.prototype, "_height", 2), Y([p(0)], X.prototype, d(563), 2), Y([p(1)], X[d(495)], d(446), 2), Y([p(1)], X.prototype, "_scaleY", 2), Y([p(0)], X.prototype, "_skewX", 2), Y([p(0)], X.prototype, "_skewY", 2), Y([p(hs.getShape(d(504)))], X.prototype, "_shape", 2), Y([p(1)], X.prototype, "_pickPrecision", 2), Y([p([d(530)])], X.prototype, "_allwaysSerializers", 2), Y([p(["id", d(480), d(519), "zIndex", "frozen", "selectedStyle", "showSelected", "draggable", "visible", "origin", d(558), "dropAllowed", "data", "attributes", d(498), d(525)])], X[d(495)], "_serializers", 2), Y([p(0)], X.prototype, d(448), 2), Y([p(!1)], X[d(495)], "frozen", 2), Y([p(K[d(560)])], X[d(495)], d(494), 2), Y([p(!0)], X[d(495)], "showSelected", 2), Y([p(!0)], X.prototype, "draggable", 2), Y([p(!1)], X.prototype, d(454), 2), Y([p(!1)], X.prototype, "dropAllowed", 2);
let lt = X;
function Vi() {
  const s = ["parse", "release", "_findChild", "can not add self as child", "invert", "remove", "addChildren", "identity", "function", "getChildrenAABB", "dirty", "name", "pointXY", "selectedEvent", "7iylIth", "isClosed", "scaleX", "pointermoveHandler", "pointeroutHandler", "_scaleY", "_localTransform", "_skewX", "stringify", "_computedStyle", "points", "deep", "prototype", "_worldTransform", "_getTotalLineWidth", "pointerEnabled", "flatten", "addChild", "_attrDirty", "removeClass", "10uZbjrh", "Rect", "2UhnWXn", "log", "top", "dropEvent", "skewX", "_height", "contains", "unselectedEvent", "forEach", "outLinks", "4264072vYmbdT", "aabb", "set", "5SmoKMw", "type", "children", "setStyle", "_requestReapint", "getConnectAutoPoint", "getComputedStyle", "title", "EventInstances", "_afterStyleComputed", "_updateTree", "539087yOBMzw", "className", "setStyles", "width", "removeFromParent", "updateZIndex", "dragHandler", "1842462NDjmGB", "isConnected", "objJson", "getPoint", "2154884eTbcfb", "lerpOnLines", "removeEventListener", "_getOBBPoints", "getAttribute", "25102968LvifLe", "styles", "attributes", "multiply", "localPoints", "dispatchEvent", "length", "dragEndHandler", "bottom", "indexOf", "style", "1474155mwldkO", "_treeDirty", "classList", "dropHandler", "MinDeep", "removeAt", "dblclickHandler", "_rotation", "right", "pointerenterEvent", "push", "_width", "getLocalPoint", "clickHandler", "map", "_scaleX", "1907970XHASGv", "_zIndex", "getLinks", "keys", "hasChildren", "_findChildren", "concat", "isSelected", "_state", "_matrixDirty", "pointerupHandler", "getOwnPropertyDescriptor", "showAllChildren", "ownerLayer", "height", "_toJSON", "hasOwnProperty", "_serializers", "parent", "_shape", "clearStyles", "get"];
  return (Vi = function() {
    return s;
  })();
}
function ja(s) {
  const t = d;
  if (s == null)
    return () => !0;
  if (typeof s == t(477))
    return s;
  let e, n, r, i = s, o = s.match(/(.*)\s*(\[.*\])/);
  if (o && (i = o[1], r = o[2]), i.startsWith(".") ? n = (a) => a[t(558)].indexOf(i) != -1 : i.startsWith("#") ? n = (a) => a.id == i.substring(1) : i != "" && (n = (a) => a.className == i), r != null && (e = r.match(/\[\s*(.*?)\s*([>|<|=|!]{1,2})\s*['"]{0,1}(.*?)['"]{0,1}]$/)) != null) {
    let a = e[1], h = e[2], l = e[3], c = (u) => "" + u[a] == l;
    return h == ">" ? c = (u) => u[a] > parseInt(l) : h == ">=" ? c = (u) => u[a] >= parseInt(l) : h == "<" ? c = (u) => u[a] < parseInt(l) : h == "<=" ? c = (u) => u[a] <= parseInt(l) : h == "!=" && (c = (u) => u[a] != l), n == null ? c : (u) => n(u) && c(u);
  }
  return () => !0;
}
const G = ee;
function Gi() {
  const s = ["playState", "play", "13152300tHnLOO", "animations", "2796CEtvRc", "hasAENode", "idle", "257770XUiuXm", "sqrt", "now", "promise", "setAttributes", "cancelAll", "animationSystem", "sin", "delayed", "pow", "system", "165150XBmnsS", "playedTimes", "easeLinear", "remove", "finished", "45138ybdyio", "forEach", "440odyGsH", "_getTickAction", "clear", "number", "abs", "addAENode", "from", "add", "52382rtosVX", "anim", "1043YXfSRb", "13508FjIcta", "reverse", "normal", "running", "direction", "230825RwWqBO", "alternate-reverse", "resolve", "aeNodes", "asin", "5nxiCxM", "startTime", "onUpdate", "cos", "duration", "isPause", "tick", "354DSmCwl"];
  return (Gi = function() {
    return s;
  })();
}
function ee(s, t) {
  const e = Gi();
  return (ee = function(n, r) {
    return e[n -= 258];
  })(s, t);
}
function Wa(s, t, e, n) {
  return e - zr(n - s, 0, e, n) + t;
}
function zr(s, t, e, n) {
  return (s /= n) < 1 / 2.75 ? e * (7.5625 * s * s) + t : s < 2 / 2.75 ? e * (7.5625 * (s -= 1.5 / 2.75) * s + 0.75) + t : s < 2.5 / 2.75 ? e * (7.5625 * (s -= 2.25 / 2.75) * s + 0.9375) + t : e * (7.5625 * (s -= 2.625 / 2.75) * s + 0.984375) + t;
}
(function() {
  const s = ee, t = Gi();
  for (; ; )
    try {
      if (parseInt(s(277)) / 1 * (parseInt(s(292)) / 2) + -parseInt(s(284)) / 3 * (-parseInt(s(267)) / 4) + -parseInt(s(272)) / 5 + parseInt(s(308)) / 6 * (parseInt(s(266)) / 7) + parseInt(s(310)) / 8 * (parseInt(s(303)) / 9) + -parseInt(s(287)) / 10 + -parseInt(s(264)) / 11 * (parseInt(s(289)) / 12) === 702147)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
let sl = { easeLinear: function(s, t, e, n) {
  return e * s / n + t;
}, easeInQuad: function(s, t, e, n) {
  return e * (s /= n) * s + t;
}, easeOutQuad: function(s, t, e, n) {
  return -e * (s /= n) * (s - 2) + t;
}, easeInOutQuad: function(s, t, e, n) {
  return (s /= n / 2) < 1 ? e / 2 * s * s + t : -e / 2 * (--s * (s - 2) - 1) + t;
}, easeInSine: function(s, t, e, n) {
  return -e * Math[ee(280)](s / n * (Math.PI / 2)) + e + t;
}, easeOutSine: function(s, t, e, n) {
  return e * Math.sin(s / n * (Math.PI / 2)) + t;
}, easeInOutSine: function(s, t, e, n) {
  return -e / 2 * (Math[ee(280)](Math.PI * s / n) - 1) + t;
}, easeInExpo: function(s, t, e, n) {
  return s == 0 ? t : e * Math.pow(2, 10 * (s / n - 1)) + t;
}, easeInOutExpo: function(s, t, e, n) {
  return s == 0 ? t : s == n ? t + e : (s /= n / 2) < 1 ? e / 2 * Math[ee(301)](2, 10 * (s - 1)) + t : e / 2 * (2 - Math.pow(2, -10 * --s)) + t;
}, easeInCirc: function(s, t, e, n) {
  return -e * (Math.sqrt(1 - (s /= n) * s) - 1) + t;
}, easeOutCirc: function(s, t, e, n) {
  return e * Math.sqrt(1 - (s = s / n - 1) * s) + t;
}, easeInOutCirc: function(s, t, e, n) {
  const r = ee;
  return (s /= n / 2) < 1 ? -e / 2 * (Math.sqrt(1 - s * s) - 1) + t : e / 2 * (Math[r(293)](1 - (s -= 2) * s) + 1) + t;
}, easeInCubic: function(s, t, e, n) {
  return e * (s /= n) * s * s + t;
}, easeOutCubic: function(s, t, e, n) {
  return e * ((s = s / n - 1) * s * s + 1) + t;
}, easeInOutCubic: function(s, t, e, n) {
  return (s /= n / 2) < 1 ? e / 2 * s * s * s + t : e / 2 * ((s -= 2) * s * s + 2) + t;
}, easeInQuart: function(s, t, e, n) {
  return e * (s /= n) * s * s * s + t;
}, easeOutQuart: function(s, t, e, n) {
  return -e * ((s = s / n - 1) * s * s * s - 1) + t;
}, easeInOutQuart: function(s, t, e, n) {
  return (s /= n / 2) < 1 ? e / 2 * s * s * s * s + t : -e / 2 * ((s -= 2) * s * s * s - 2) + t;
}, easeInQuint: function(s, t, e, n) {
  return e * (s /= n) * s * s * s * s + t;
}, easeOutQuint: function(s, t, e, n) {
  return e * ((s = s / n - 1) * s * s * s * s + 1) + t;
}, easeInOutQuint: function(s, t, e, n) {
  return (s /= n / 2) < 1 ? e / 2 * s * s * s * s * s + t : e / 2 * ((s -= 2) * s * s * s * s + 2) + t;
}, easeInElastic: function(s, t, e, n) {
  const r = ee;
  var i = 1.70158, o = 0, a = e;
  return s == 0 ? t : (s /= n) == 1 ? t + e : (o || (o = 0.3 * n), a < Math[r(260)](e) ? (a = e, i = o / 4) : i = o / (2 * Math.PI) * Math[r(276)](e / a), -a * Math.pow(2, 10 * (s -= 1)) * Math.sin((s * n - i) * (2 * Math.PI) / o) + t);
}, easeOutElastic: function(s, t, e, n) {
  const r = ee;
  var i = 1.70158, o = 0, a = e;
  return s == 0 ? t : (s /= n) == 1 ? t + e : (o || (o = 0.3 * n), a < Math.abs(e) ? (a = e, i = o / 4) : i = o / (2 * Math.PI) * Math[r(276)](e / a), a * Math.pow(2, -10 * s) * Math[r(299)]((s * n - i) * (2 * Math.PI) / o) + e + t);
}, easeInOutElastic: function(s, t, e, n) {
  const r = ee;
  var i = 1.70158, o = 0, a = e;
  return s == 0 ? t : (s /= n / 2) == 2 ? t + e : (o || (o = n * (0.3 * 1.5)), a < Math.abs(e) ? (a = e, i = o / 4) : i = o / (2 * Math.PI) * Math[r(276)](e / a), s < 1 ? a * Math.pow(2, 10 * (s -= 1)) * Math.sin((s * n - i) * (2 * Math.PI) / o) * -0.5 + t : a * Math.pow(2, -10 * (s -= 1)) * Math.sin((s * n - i) * (2 * Math.PI) / o) * 0.5 + e + t);
}, easeInBack: function(s, t, e, n, r) {
  return r == null && (r = 1.70158), e * (s /= n) * s * ((r + 1) * s - r) + t;
}, easeOutBack: function(s, t, e, n, r) {
  return r == null && (r = 1.70158), e * ((s = s / n - 1) * s * ((r + 1) * s + r) + 1) + t;
}, easeInOutBack: function(s, t, e, n, r) {
  return r == null && (r = 1.70158), (s /= n / 2) < 1 ? e / 2 * (s * s * ((1 + (r *= 1.525)) * s - r)) + t : e / 2 * ((s -= 2) * s * ((1 + (r *= 1.525)) * s + r) + 2) + t;
}, easeInBounce: Wa, easeOutBounce: zr, easeInOutBounce: function(s, t, e, n) {
  return s < n / 2 ? 0.5 * Wa(2 * s, 0, e, n) + t : 0.5 * zr(2 * s - n, 0, e, n) + 0.5 * e + t;
} };
class dh {
  constructor(t) {
    const e = ee;
    this[e(281)] = 1e3, this.delay = 0, this.direction = e(269), this.fillMode = "none", this.playState = e(291), this.isPause = !1, this.finished = !1, this.delayed = !1, this.times = 1, this.playedTimes = 0, this.effect = "easeLinear", this[e(296)](t);
  }
  [G(296)](t) {
    return Object.assign(this, t), this;
  }
  [G(279)](t) {
    return this.update = t, this;
  }
  cancel() {
    const t = G;
    return this.system && this.system.remove(this), this.reject && (this.reject(), this.reject = null), this[t(285)] = t(307), this;
  }
  pause() {
    return this[G(285)] = "paused", this.isPause = !0, this;
  }
  continue() {
    const t = G;
    return this.startTime = Date.now() - this.currentTime, this.playState = t(270), this.isPause = !1, this;
  }
  tick(t) {
    const e = G;
    if (this[e(285)] != e(270))
      return !1;
    let n = t - this.startTime;
    return this.currentTime = n, n >= this.duration ? (this[e(285)] = "finished", this.stepAction(this.duration), this.object && this.object.markDirty(), this.playedTimes < this.times ? this.play() : (this[e(274)](), this.resolve = null, this.onEnd && this.onEnd())) : (this.stepAction(n), this.object && this.object.markDirty()), !0;
  }
  [G(286)]() {
    const t = G;
    let e = this;
    this.system[t(263)](this), this[t(304)]++, this[t(282)] = !1, this.delay != 0 && this[t(300)] == 0 ? (setTimeout(function() {
      const o = t;
      e.startTime = Date[o(294)](), e[o(285)] = o(270);
    }, this.delay), e.delayed = !0) : (e[t(278)] = Date[t(294)](), e.playState = "running");
    const n = this;
    let r = this._getTickAction();
    this.stepAction = r;
    let i = this.promise;
    return i == null && (i = new Promise(function(o, a) {
      n.resolve == null && (n.resolve = o, n.reject = a);
    }), this[t(295)] = this.promise), i.catch((o) => {
    });
  }
  [G(311)]() {
    const t = G;
    let e = this.effect || t(305), n = this[t(262)], r = this.to, i = this[t(281)], o = this.update, a = n, h = r;
    if (typeof n == t(259) && (a = [n], h = [r]), this[t(271)] == t(268) || this.direction == t(273)) {
      let _ = a;
      a = h, h = _;
    }
    let l = a[0];
    const c = Array.isArray(n), u = typeof l == t(259), f = l.x != null || l.y != null;
    let g, y = a.slice(), I = sl[e], x = this[t(271)] == "alternate" || this.direction == t(273), m = this, w = 0.5 * this[t(281)];
    if (u)
      g = function(_) {
        let P = _;
        x && (P = _ > w ? 2 * m.duration - 2 * P : 2 * _);
        for (let v = 0; v < a.length; v++) {
          const D = a[v], W = h[v] - D;
          if (W == 0)
            y[v] = D;
          else {
            let et = I(P, D, W, i);
            y[v] = et;
          }
        }
        o(c ? y : y[0]);
      };
    else {
      if (!f)
        throw new Error("value format error.");
      g = function(_) {
        for (let P = 0; P < a.length; P++) {
          const v = a[P], D = h[P], W = D.x - v.x, et = D.y - v.y;
          let pe = { x: v.x, y: v.y };
          W != 0 && (pe.x = I(_, v.x, W, i)), et != 0 && (pe.y = I(_, v.y, et, i)), y[P] = pe;
        }
        o(c ? y : y[0]);
      };
    }
    return g;
  }
}
class rl {
  constructor() {
    const t = G;
    this.animations = /* @__PURE__ */ new Set(), this[t(275)] = /* @__PURE__ */ new WeakSet(), this.timeline = { begin: 17645184e5, end: Date.now() };
  }
  [G(290)](t) {
    return this.aeNodes.has(t);
  }
  [G(261)](t) {
    const e = G;
    !this.hasAENode(t) && t.setupAE(), t[e(298)] = this, t[e(288)][e(309)]((n, r) => {
      const i = e;
      n.object = t, n.system = this, n[i(286)]();
    }), this.aeNodes.add(t);
  }
  removeAENode(t) {
    t[G(298)] = null, t.animations.forEach((e, n) => {
      e.cancel();
    }), this.aeNodes.delete(t);
  }
  add(t) {
    t[G(302)] = this, this.animations.add(t);
  }
  [G(306)](t) {
    this.animations.delete(t);
  }
  [G(297)]() {
    const t = G;
    for (let e of this[t(288)].values())
      e.cancel();
    this[t(288)][t(258)]();
  }
  [G(283)](t) {
    let e = !1;
    return this.animations.forEach((n) => {
      n.tick(t) && e == 0 && (e = !0), n.playState == "finished" && this.animations.delete(n);
    }), e;
  }
  anime(t) {
    return this.anim(t);
  }
  [G(265)](t) {
    const e = G;
    t[e(281)] == null && (t.duration = 1e3);
    let n = new dh();
    return n[e(302)] = this, n.setAttributes(t), n;
  }
}
const il = Qi;
function qi() {
  const s = ["get", "405968LAxTPg", "175QFDieY", "528488ZxRNaV", "14UVxySJ", "3758GXkIIk", "9885326fUSaJX", "347605QHGKiC", "9WGpIdx", "611244itMMDR", "41240MQvqlZ", "324uqBYgD"];
  return (qi = function() {
    return s;
  })();
}
(function() {
  const s = Qi, t = qi();
  for (; ; )
    try {
      if (parseInt(s(121)) / 1 * (-parseInt(s(124)) / 2) + parseInt(s(115)) / 3 * (-parseInt(s(120)) / 4) + parseInt(s(114)) / 5 + -parseInt(s(116)) / 6 * (parseInt(s(123)) / 7) + -parseInt(s(122)) / 8 + -parseInt(s(118)) / 9 * (-parseInt(s(117)) / 10) + parseInt(s(125)) / 11 === 213541)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const Ki = /* @__PURE__ */ new Map([["lt", { x: -1, y: -1 }], ["ct", { x: 0, y: -1 }], ["rt", { x: 1, y: -1 }], ["lm", { x: -1, y: 0 }], ["center", { x: 0, y: 0 }], ["rm", { x: 1, y: 0 }], ["lb", { x: -1, y: 1 }], ["cb", { x: 0, y: 1 }], ["rb", { x: 1, y: 1 }]]);
function Qi(s, t) {
  const e = qi();
  return (Qi = function(n, r) {
    return e[n -= 114];
  })(s, t);
}
const ol = /* @__PURE__ */ new Map(), al = Ki.keys();
for (let s of al) {
  let t = Ki[il(119)](s), e = B.normalize([], [t.x, t.y]);
  ol.set(s, e);
}
function Zi() {
  const s = ["getIntersect", "dist", "isClosed", "_measureDistance", "length", "3997140vwXLrW", "5126076OGUWgq", "1518698iPoRMf", "getPoints", "24431chkBev", "closePath", "forEach", "DefaultAnchors", "beginPath", "draw", "1455834dLZgMA", "defineProperty", "segIndex", "18530rTWXQI", "3346227DTLBES", "LineShape", "7RwRMoR", "map", "1pSBSIf", "className", "3718652GIyyAK", "push", "16uLeWUu", "prototype", "stroke", "sqrt", "filter"];
  return (Zi = function() {
    return s;
  })();
}
const H = tr;
(function() {
  const s = tr, t = Zi();
  for (; ; )
    try {
      if (-parseInt(s(132)) / 1 * (-parseInt(s(148)) / 2) + -parseInt(s(160)) / 3 + -parseInt(s(134)) / 4 + -parseInt(s(146)) / 5 + parseInt(s(156)) / 6 * (-parseInt(s(130)) / 7) + -parseInt(s(136)) / 8 * (parseInt(s(147)) / 9) + -parseInt(s(159)) / 10 * (-parseInt(s(150)) / 11) === 648595)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var hl = Object[H(157)], ll = Object.getOwnPropertyDescriptor, Pn = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? ll(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && hl(t, e, i), i;
};
const Br = class fh extends rn {
  constructor() {
    const t = H;
    super(), this[t(143)] = !1, this.anchors = fh.DefaultAnchors;
  }
  draw(t, e) {
    let n = e[H(149)]();
    if (n.length == 0)
      return;
    let r = n[0];
    t.beginPath(), t.moveTo(r.x, r.y);
    for (let o = 1; o < n.length - 1; o++)
      (n[o].x !== r.x || n[o].y !== r.y) && t.lineTo(n[o].x, n[o].y), r = n[o];
    let i = n[n.length - 1];
    t.lineTo(i.x, i.y), t.stroke();
  }
};
Br[H(153)] = /* @__PURE__ */ new Map(), Pn([p(H(161))], Br.prototype, H(133), 2);
let An = Br;
const jr = class gh extends An {
  constructor() {
    const t = H;
    super(), this.anchors = gh[t(153)];
  }
};
jr.DefaultAnchors = /* @__PURE__ */ new Map(), Pn([p("AutoFoldShape")], jr.prototype, H(133), 2);
let yh = jr;
const Wr = class Hn extends An {
  constructor() {
    const t = H;
    super(), this.anchors = Hn.DefaultAnchors, this[t(143)] = !1;
  }
  [H(155)](t, e) {
    const n = H;
    let r = e.getPoints();
    if (r.length == 0)
      return;
    let i = r[0], o = r[1], a = r[2];
    t[n(154)](), t.moveTo(i.x, i.y), t.quadraticCurveTo(o.x, o.y, a.x, a.y), this[n(143)] && t.closePath(), t.stroke();
  }
  [H(141)](t, e, n) {
    const r = H;
    let i = n.worldToLocalXY(t, e), o = n[r(149)](), a = o[0], h = o[1], l = o[2], c = Hn._measureDistance(i.x, i.y, a.x, a.y, h.x, h.y, l.x, l.y), u = n.getPoint(c.t), f = new sn(u.x, u.y);
    return f.object = n, f.dist = c[r(142)], f.t = c.t, f[r(158)] = 0, f;
  }
  static [H(144)](t, e, n, r, i, o, a, h) {
    const l = H;
    function c(I) {
      const x = ms(I, n, i, a), m = ms(I, r, o, h), w = Ra(I, n, i, a), _ = Ra(I, r, o, h);
      return (x - t) * w + (m - e) * _;
    }
    function u(I) {
      return (c(I + 1e-5) - c(I)) / 1e-5;
    }
    const f = [0, 0.5, 1].map((I) => Pi(c, u, I)).filter((I) => I >= 0 && I <= 1);
    let g = 1 / 0, y = 0;
    return f[l(152)]((I) => {
      const x = pn(ms(I, n, i, a), ms(I, r, o, h), t, e);
      x < g && (g = x, y = I);
    }), pn(n, r, t, e) < g && (g = pn(n, r, t, e), y = 0), pn(a, h, t, e) < g && (g = pn(a, h, t, e), y = 1), { dist: g, t: y };
  }
  static _calcQuadBezierExtrema(t, e, n) {
    let r = t - 2 * e + n;
    return r === 0 ? null : (t - e) / r;
  }
  static _getQuadBezierExtremas(t, e, n) {
    const r = t.x, i = t.y, o = e.x, a = e.y, h = n.x, l = n.y, c = [];
    let u = Hn._calcQuadBezierExtrema(r, o, h);
    return u != null && u > 0 && u < 1 && c.push(u), u = Hn._calcQuadBezierExtrema(i, a, l), u != null && u > 0 && u < 1 && c.push(u), c;
  }
};
Wr.DefaultAnchors = /* @__PURE__ */ new Map(), Pn([p("QuadraticCurveShape")], Wr[H(137)], H(133), 2);
let zs = Wr;
const Ls = class Rr extends An {
  constructor() {
    super(), this.anchors = Rr.DefaultAnchors;
  }
  draw(t, e) {
    const n = H;
    let r = e[n(149)]();
    if (r.length == 0)
      return;
    let i = r[0], o = r[1], a = r[3], h = r[4];
    t[n(154)](), t.moveTo(i.x, i.y), t.bezierCurveTo(o.x, o.y, a.x, a.y, h.x, h.y), this[n(143)] && t[n(151)](), t[n(138)]();
  }
  getIntersect(t, e, n) {
    const r = H;
    n.worldToLocalXY(t, e);
    let i = n.getPoints(), o = i[0], a = i[1], h = i[3], l = i[4], c = Rr._measureDistance(t, e, o.x, o.y, a.x, a.y, h.x, h.y, l.x, l.y), u = n.getPoint(c.t), f = new sn(u.x, u.y);
    return f.object = n, f.dist = c[r(142)], f.t = c.t, f.segIndex = 0, f;
  }
  static [H(144)](t, e, n, r, i, o, a, h, l, c) {
    const u = H;
    function f(v, D, W, et, pe) {
      const ie = 1 - v;
      return ie * ie * ie * D + 3 * ie * ie * v * W + 3 * ie * v * v * et + v * v * v * pe;
    }
    function g(v, D, W, et, pe) {
      const ie = 1 - v;
      return 3 * ie * ie * (W - D) + 6 * ie * v * (et - W) + 3 * v * v * (pe - et);
    }
    function y(v, D, W, et) {
      return (v - W) * (v - W) + (D - et) * (et - et);
    }
    function I(v) {
      const D = f(v, n, i, a, l), W = f(v, r, o, h, c);
      return (D - t) * g(v, n, i, a, l) + (W - e) * g(v, r, o, h, c);
    }
    function x(v) {
      const D = g(v, n, i, a, l), W = g(v, r, o, h, c);
      return D * D + W * W + I(v);
    }
    const m = [0, 0.25, 0.5, 0.75, 1][u(131)]((v) => Pi(I, x, v))[u(140)]((v) => v >= 0 && v <= 1);
    let w = 1 / 0, _ = 0;
    const P = m.map((v) => {
      const D = f(v, n, i, a, l), W = f(v, r, o, h, c), et = Math.sqrt(y(D, W, t, e));
      return et < w && (w = et, _ = v), et;
    });
    return P.push(Math[u(139)](y(n, r, t, e)), Math.sqrt(y(l, c, t, e))), { dist: Math.min(...P), t: _ };
  }
  static _getCubicBezierExtremas(t, e, n, r) {
    const i = t.x, o = t.y, a = e.x, h = e.y, l = n.x, c = n.y, u = r.x, f = r.y, g = [], y = (I, x, m) => {
      const w = tr;
      if (I === 0)
        return;
      const _ = x * x - 4 * I * m;
      if (_ >= 0) {
        const P = Math.sqrt(_), v = (-x + P) / (2 * I), D = (-x - P) / (2 * I);
        v > 0 && v < 1 && g[w(135)](v), D > 0 && D < 1 && g.push(D);
      }
    };
    return y(3 * (u - 3 * l + 3 * a - i), 6 * (l - 2 * a + i), 3 * (a - i)), y(3 * (f - 3 * c + 3 * h - o), 6 * (c - 2 * h + o), 3 * (h - o)), g;
  }
};
Ls[H(153)] = /* @__PURE__ */ new Map(), Pn([p("BezierCurveShape")], Ls.prototype, "className", 2), Pn([p(!1)], Ls.prototype, H(143), 2);
let Bs = Ls;
class mh extends An {
  constructor() {
    super(), this.isClosed = !1;
  }
  draw(t, e) {
    const n = H;
    let r = e.getPoints();
    if (r[n(145)] == 0)
      return;
    let i = r[0], o = r[r.length - 1], a = 0.5 * A.distance(i.x, i.y, o.x, o.y), h = 0.5 * (i.x + o.x), l = 0.5 * (i.y + o.y);
    if (t.beginPath(), e && e.direction == Dt.anticlockwise) {
      let c = Math.atan2(i.y - o.y, i.x - o.x);
      t.arc(h, l, a, c, c + Math.PI, !0);
    } else {
      let c = Math.atan2(i.y - o.y, i.x - o.x);
      t.arc(h, l, a, c, c + Math.PI, !1);
    }
    this.isClosed && t.closePath(), t[n(138)]();
  }
  getIntersect(t, e, n) {
    const r = H;
    let i = n.worldToLocalXY(t, e), o = n[r(149)](), a = o[0], h = o[o.length - 1], l = n[r(144)](a, h, i), c = n.getPoint(l.t), u = new sn(c.x, c.y);
    return u.object = n, u.dist = l[r(142)], u.t = l.t, u.segIndex = 0, u;
  }
}
function tr(s, t) {
  const e = Zi();
  return (tr = function(n, r) {
    return e[n -= 130];
  })(s, t);
}
function ms(s, t, e, n) {
  const r = 1 - s;
  return r * r * t + 2 * r * s * e + s * s * n;
}
function Ra(s, t, e, n) {
  return 2 * (1 - s) * (e - t) + 2 * s * (n - e);
}
Pn([p("ArcShape")], mh[H(137)], "className", 2);
const Se = er;
function $i() {
  const s = ["3215515aBLpxA", "3238857fTXDDq", "LinkPath.json.target == null", "getOnLinkPoint", "setBegin", "length", "anchor", "map", "6BPCmJW", "694784XZEKmK", "7612256nALrJJ", "anchorProxyList", "getPoints", "7KiOaZI", "set", "22844668Zjdurs", "toJSON", "10eDibCk", "85204EIJkcD", "60YnCVNg", "237334XdzyiD"];
  return ($i = function() {
    return s;
  })();
}
function er(s, t) {
  const e = $i();
  return (er = function(n, r) {
    return e[n -= 187];
  })(s, t);
}
(function() {
  const s = er, t = $i();
  for (; ; )
    try {
      if (parseInt(s(204)) / 1 * (parseInt(s(190)) / 2) + parseInt(s(199)) / 3 * (-parseInt(s(200)) / 4) + -parseInt(s(191)) / 5 + parseInt(s(189)) / 6 * (-parseInt(s(188)) / 7) + -parseInt(s(201)) / 8 + parseInt(s(192)) / 9 * (-parseInt(s(187)) / 10) + parseInt(s(206)) / 11 === 483837)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class cl {
  constructor() {
    this[er(202)] = [];
  }
  [Se(207)](t, e) {
    const n = Se;
    let r = e[n(203)]();
    return this.anchorProxyList[n(198)]((i, o) => {
      const a = n;
      if (i.host instanceof j) {
        let l = i[a(197)], c = N[a(194)](e, i);
        l.remember(c);
      }
      let h = i[a(207)](t);
      if (h.hasOwnProperty("target") && h.target == null) {
        console.warn(a(193));
        let l = r[0];
        return e.className == "PathLink" ? l = r[o] : o > 0 && (l = r[r[a(196)] - 1]), { className: pt.prototype.className, x: l.x, y: l.y };
      }
      return h;
    });
  }
  [Se(205)](t) {
    const e = Se;
    this.anchorProxyList[e(196)] = 0;
    for (let n = 0; n < t[e(196)]; n++)
      this.anchorProxyList.push(t[n]);
  }
  [Se(195)](t) {
    this[Se(202)][0] = t;
  }
  setEnd(t) {
    if (this.anchorProxyList.length < 2)
      return void (this.anchorProxyList[1] = t);
    let e = this.anchorProxyList.length - 1;
    this.anchorProxyList[e] = t;
  }
  getLength() {
    const t = Se;
    return this.anchorProxyList[t(196)];
  }
  getBegin() {
    return this.anchorProxyList[0];
  }
  getEnd() {
    const t = Se;
    let e = this[t(202)].length - 1;
    return this[t(202)][e];
  }
}
const b = eo;
(function() {
  const s = eo, t = to();
  for (; ; )
    try {
      if (-parseInt(s(190)) / 1 + -parseInt(s(251)) / 2 * (-parseInt(s(174)) / 3) + -parseInt(s(179)) / 4 + -parseInt(s(224)) / 5 + -parseInt(s(230)) / 6 * (-parseInt(s(189)) / 7) + parseInt(s(253)) / 8 + parseInt(s(228)) / 9 * (parseInt(s(247)) / 10) === 408805)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var ul = Object.defineProperty, pl = Object[b(239)], ke = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? pl(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && ul(t, e, i), i;
};
function to() {
  const s = ["_computedStyle", "begin", "setEnd", "77694ILsOCO", "endOffset", "get", "concat", "changeParent", "3129376yXEXUS", "max", "length", "className", "aabb", "ctrlPoint", "rotate", "points", "arrow must be Node", "_getLocalTransform", "14QJmTAL", "746496KyZAfp", "_state", "push", "_endOffset", "_shape", "_isAlone", "setBeginArrow", "origin", "beginArrow", "getPoints", "localPoints", "getLabel", "path", "backgroundColor", "translateWith", "toJSON", "isDisplayObjectHost", "_afterUpdateMatrix", "getConnectionAnchor", "borderWidth", "unlink", "pointerEnabled", "draggable", "getOnLinkPoint", "unlinkBegin", "_upgradeParent", "draw", "children", "_preHitTest", "_text", "dist", "width", "worldToLocalXY", "_updatePoints", "3506565lOlttU", "prototype", "deep", "addChild", "188685fNAsvX", "toAABB", "1371798NGXhvT", "map", "getSegmentAnchor", "warn", "_getEndVec", "centerOffset", "text", "anchorProxyList", "end", "getOwnPropertyDescriptor", "endArrow", "removeOutLink", "parent", "hitTest", "_matrixDirty", "removeFromParent", "QuadBezierLink", "830KdUreH", "addOutLink", "label", "getComputedStyle", "2tTpQQI", "_calcAZ", "3325592cEhxqz", "removeChild", "_drawContentDesc", "_setProxies", "host", "getAnchor", "setLabel", "localToWorldXY", "BezierLink", "Link", "padding", "getRect", "getEndArrow", "unknow linkTarget type", "_getBeginVec", "same parent, dont need change", "scale", "_middleIndex"];
  return (to = function() {
    return s;
  })();
}
class j extends lt {
  constructor(t, e, n, r, i) {
    const o = b;
    if (super(), this._state = { _needPaint: !0, _isOutOfViewport: !1, _attrDirty: !0, points: [], az: [] }, this._drawContentDesc = { hasBorder: !1, hasBackgroundColor: !1 }, this.text = t, this._invertWorldTransform = It.allocate(), this.path = new cl(), e == null) {
      const a = new pt(0, 0);
      this[o(202)].anchorProxyList[o(192)](new N(a));
    } else
      this.setBegin(e, r);
    if (n == null) {
      const a = new pt(0, 0);
      this.path[o(237)][o(192)](new N(a));
    } else
      this.setEnd(n, i);
    this._obb[o(183)] = new O(0, 0, 1, 1);
  }
  get [b(172)]() {
    return this[b(202)].getBegin();
  }
  get end() {
    return this[b(202)].getEnd();
  }
  get beginOffset() {
    return this._beginOffset;
  }
  set beginOffset(t) {
    this._beginOffset = t, this._matrixDirty = !0;
  }
  get [b(175)]() {
    return this[b(193)];
  }
  set endOffset(t) {
    const e = b;
    this[e(193)] = t, this[e(244)] = !0;
  }
  [b(232)](t, e) {
    return new N(new Vt(null, t, e), this);
  }
  getAnchor(t) {
    let e = this._shape.getConnectionAnchor(t);
    if (e == null)
      throw new Error("anchor not found:" + t);
    return new N(e, this);
  }
  getSegmentCount() {
    return 1;
  }
  [b(264)]() {
    const t = b;
    let e = this._getTotalLineWidth();
    return ce[t(229)](new O(), this._obb[t(200)], e);
  }
  get text() {
    const t = b;
    return this[t(249)] != null ? this.label[t(236)] : this._text;
  }
  set text(t) {
    const e = b;
    this.setLabel(t), this[e(219)] = t;
  }
  [b(259)](t) {
    const e = b;
    return t == null && this.label == null ? this : t instanceof C ? (Fa(this, t), t.pointerEnabled = !1, t) : this[e(249)] != null && typeof t == "string" ? (this.label[e(236)] = t, this) : (function(n, r) {
      const i = b;
      if (n.label == null) {
        const o = new en(r);
        return o[i(212)] = !1, o[i(211)] = !1, o.autoSize = !0, o.setOriginOnLink(0.5), o.setOriginPosition("cb"), Fa(n, o), o;
      }
      n.label.text = r, n.label;
    }(this, t), this);
  }
  [b(201)]() {
    return this[b(249)];
  }
  getBeginArrow() {
    return this.beginArrow;
  }
  setBeginArrow(t) {
    const e = b;
    if (!(t instanceof C))
      throw new Error("arrow must be Node");
    let n = this;
    return n.beginArrow != null && n.removeChild(n.beginArrow), n[e(217)].indexOf(t) == -1 && n.addChild(t), t[e(212)] = !1, n[e(198)] = t, this._matrixDirty = !0, this;
  }
  [b(265)]() {
    return this.endArrow;
  }
  setEndArrow(t) {
    const e = b;
    if (!(t instanceof C))
      throw new Error(e(187));
    let n = this;
    return n.endArrow != null && n[e(254)](n.endArrow), n.children.indexOf(t) == -1 && n.addChild(t), t.draggable = !1, n.endArrow = t, this._matrixDirty = !0, this;
  }
  _getOBBPoints() {
    return this.points = this._updatePoints(), this.points;
  }
  setBegin(t, e) {
    const n = b;
    this._matrixDirty = !0, this.begin && this.begin.isDisplayObjectHost() && this.begin.host.removeOutLink(this);
    let r = t instanceof N ? t : Fr(t, e);
    this.path.setBegin(r), r.host instanceof lt && r[n(257)].addOutLink(this);
  }
  [b(173)](t, e) {
    const n = b;
    this._matrixDirty = !0, this.end && this.end.isDisplayObjectHost() && this.end.host.removeInLink(this);
    let r = t instanceof N ? t : Fr(t, e);
    this[n(202)].setEnd(r), r.host instanceof lt && r[n(257)].addInLink(this);
  }
  getBeginPoint() {
    const t = b;
    return this[t(186)] == null && (this[t(186)] = this._updatePoints()), this.points[0];
  }
  getEndPoint() {
    const t = b;
    return this.points == null && (this.points = this._updatePoints()), this[t(186)][this.points.length - 1];
  }
  _getTotalLineWidth() {
    const t = b, e = this._drawContentDesc, n = this[t(171)];
    let r = 0.5 * (n.lineWidth || 0);
    return r += n[t(263)] || 0, e.hasBorder && (r += n.borderWidth), r;
  }
  draw(t) {
    const e = b;
    return this[e(172)] == null || this.end == null || (this._computedStyle.applyTo(t), this._shape[e(216)](t, this)), this;
  }
  _afterStyleComputed() {
    const t = b, e = this._computedStyle, n = this[t(255)];
    n.hasBackgroundColor = e[t(203)] != null, n.hasBorder = e[t(209)] > 0;
  }
  [b(204)](t, e) {
    const n = b;
    let r = this.path[n(237)];
    for (let i = 0; i < r.length; i++) {
      let o = r[i], a = o.anchor;
      o.host == null && a instanceof pt && (a.x += t, a.y += e, this._matrixDirty = !0);
    }
    return this;
  }
  [b(252)]() {
    const t = b;
    let e = N.getOnLinkPoint(this, this[t(172)]), n = N.getOnLinkPoint(this, this.end), r = this._state.az;
    return r[0] = e, r[1] = n, r;
  }
  _notUpdateYet() {
    const t = b;
    console[t(233)]("not yet"), this[t(186)] = this._updatePoints();
  }
  [b(207)]() {
    this._offsetAndArrowHandle();
  }
  _offsetAndArrowHandle() {
    const t = b;
    if (this.beginArrow && this.beginArrow.parent !== this && (this.beginArrow = null), this.endArrow && this.endArrow[t(242)] !== this && (this[t(240)] = null), !this._needCalcOffset())
      return;
    let e = { x: this.points[0].x, y: this[t(186)][0].y }, n = { x: this.points[this.points[t(181)] - 1].x, y: this.points[this.points.length - 1].y };
    Ha(e, this.beginArrow, this[t(267)](), this.beginOffset || 0), Ha(n, this[t(240)], this[t(234)](), this[t(175)] || 0);
    let r = this.points;
    r[0] = e, r[r[t(181)] - 1] = n;
  }
  [b(223)]() {
    const t = b;
    let e = this[t(191)][t(186)];
    e.length = 0;
    const n = this.path[t(237)];
    for (let r = 0; r < n.length; r++) {
      let i = n[r], o = N[t(213)](this, i);
      e[r] = o;
    }
    return e;
  }
  [b(199)]() {
    const t = b;
    return this.points == null && (this.points = this[t(223)]()), this[t(186)];
  }
  addChild(t) {
    const e = b;
    return t[e(197)] == null && (t[e(197)] = [0, 0]), super[e(227)](t);
  }
  [b(188)]() {
    return this._localTransform;
  }
  _doTransform() {
  }
  getConnectAutoPoint(t) {
    let e = this._shape.getIntersect(t.x, t.y, this);
    return { x: e.x, y: e.y };
  }
  _getAABBWithText() {
    const t = b;
    let e = this.getAABB(), n = this[t(201)]();
    if (n != null && !n._isTextBlank()) {
      let r = n._getAABBWithText();
      !r.isEmpty() && (e = O.union(e.clone(), r));
    }
    return e;
  }
  [b(215)]() {
    const t = b;
    let e = this[t(172)][t(257)], n = this.end.host;
    if (e == null || n == null)
      return null;
    let r = Ps(e, n);
    return this[t(242)] === r ? null : (this[t(178)](r), r);
  }
  _needCalcOffset() {
    const t = b;
    return this.beginOffset != 0 || this.endOffset != 0 || this[t(198)] != null || this.endArrow != null;
  }
  _getBeginVec() {
    let t = this.getPoint(1e-5), e = this.points[0], n = [e.x - t.x, e.y - t.y];
    return B.normalize(n, n);
  }
  _getEndVec() {
    const t = b;
    let e = this.getPoint(0.9999999), n = this[t(186)][this.points[t(181)] - 1], r = [n.x - e.x, n.y - e.y];
    return B.normalize(r, r);
  }
  [b(195)]() {
    const t = b;
    return !this.begin.isDisplayObjectHost() && !this.end[t(206)]();
  }
  unlinkBegin() {
    const t = b;
    this.begin.isDisplayObjectHost() && this.begin[t(257)][t(241)](this), this.setBegin(this.getBeginPoint());
  }
  unlinkEnd() {
    const t = b;
    this[t(238)].isDisplayObjectHost() && this.end[t(257)].removeInLink(this), this.setEnd(this.getEndPoint());
  }
  unlink() {
    this.unlinkBegin(), this.unlinkEnd(), this._matrixDirty = !0;
  }
  removeFromParent() {
    const t = b;
    return this[t(210)](), super[t(245)](), this;
  }
  changeParent(t) {
    const e = b;
    if (this.parent === t)
      throw new Error(e(268));
    let n = this, r = this;
    function i(o, a, h) {
      let l = o[a];
      l != null && (l = o.localToWorldXY(l.x, l.y), o[a] = h.worldToLocalXY(l.x, l.y));
    }
    if (r.begin instanceof pt && !r.begin.hasHost()) {
      let o = r.localToWorldXY(r.begin.x, r.begin.y), a = t[e(222)](o.x, o.y);
      r.setBegin(a);
    }
    if (r[e(238)] instanceof pt && !r.end.hasHost()) {
      let o = r[e(260)](r[e(238)].x, r.end.y), a = t.worldToLocalXY(o.x, o.y);
      r.setEnd(a);
    }
    return r[e(182)] == kt[e(246)] ? i(r, q[e(184)], t) : r[e(182)] == kt[e(261)] ? (i(r, q.ctrlPoint1, t), i(r, q.ctrlPoint2, t)) : r.className == kt.AutoFoldLink && (i(r, kt.fold1Offset, t), i(r, kt.fold2Offset, t), i(r, kt[e(235)], t)), n[e(242)] && n.parent.removeChild(n), t[e(227)](n), this;
  }
  _positionToLocalPoint(t, e, n) {
    const r = b;
    let i = this[r(194)][r(208)](t);
    if (i == null)
      throw Error("position not exist:" + t);
    return N.calcPointByAnchor(this, i);
  }
  _toJSON(t) {
    const e = b;
    let n = super._toJSON(t);
    if (t != null) {
      let r = t.objIndexMap;
      n[e(202)] = this[e(202)][e(205)](r, this), this.label != null && (n.label = r[e(176)](this.label)), this.beginArrow != null && (n.beginArrow = r.get(this.beginArrow)), this[e(240)] != null && (n.endArrow = r.get(this.endArrow));
    }
    return n;
  }
  _afterJson(t, e) {
    const n = b;
    if (t.label != null) {
      let i = e[n(176)](t.label);
      this[n(249)] = i;
    }
    if (t.beginArrow != null) {
      let i = e[n(176)](t.beginArrow);
      this[n(196)](i);
    }
    if (t[n(240)] != null) {
      let i = e.get(t.endArrow);
      this.setEndArrow(i);
    }
    let r = t.path[n(231)]((i) => N.fromJSON(i, e));
    this[n(256)](r);
  }
  [b(256)](t) {
    const e = b;
    this[e(202)].set(t);
    let n = this.path.getBegin();
    n.isDisplayObjectHost() && n.host[e(248)](this), n = this[e(202)].getEnd(), n.isDisplayObjectHost() && n[e(257)].addInLink(this);
    for (let r = 1; r < t[e(181)] - 1; r++)
      n = t[r], n.isDisplayObjectHost() && n.host.addInLink(this);
  }
  [b(243)](t, e) {
    const n = b;
    if (this._preHitTest(t, e))
      return !0;
    let r = this._getAABBWithText(), i = this[n(250)]().lineWidth || 0, o = Math[n(180)](0.5 * i, this._pickPrecision);
    if (!r.contains(t, e, o))
      return !1;
    let a = this._obb[n(186)], h = Ut.getNearestPointOnLines(t, e, a);
    return h.dist != null && h[n(220)] < o;
  }
  [b(218)](t, e) {
    const n = b;
    return this.endArrow != null && this.endArrow.hitTest(t, e) == 1 || this[n(198)] != null && this[n(198)].hitTest(t, e) == 1 || this.label != null && this.label[n(243)](t, e) == 1;
  }
  getInLinks() {
    return this.inLinks;
  }
  getOutLinks() {
    return this.outLinks;
  }
  destroy() {
    const t = b;
    super.destroy(), this[t(214)](), this.unlinkEnd(), this.beginArrow = null, this[t(240)] = null, this[t(249)] = null, this._shape = null, this.points = null;
  }
}
function Fa(s, t) {
  return s.label != null && s.removeChild(s.label), s.label = t, s.children.indexOf(s.label) == -1 && s.addChild(s.label), t.setOriginOnLink(0.5), t;
}
function eo(s, t) {
  const e = to();
  return (eo = function(n, r) {
    return e[n -= 169];
  })(s, t);
}
function Ps(s, t) {
  const e = b;
  return s.parent === t.parent ? s[e(242)] : s.deep == t[e(226)] ? Ps(s[e(242)], t.parent) : s.deep > t.deep ? Ps(s.parent, t) : Ps(s, t.parent);
}
function Ha(s, t, e, n) {
  const r = b;
  let i = t ? t[r(221)] : 0;
  if (n != 0 || i != 0) {
    let o = B.scale([], e, -n - i);
    s.x += o[0], s.y += o[1];
  }
  if (i > 0) {
    let o = B[r(169)]([], e, 0.5 * i);
    t.setXY(s.x + o[0], s.y + o[1]), t[r(185)](Math.atan2(e[1], e[0]));
  }
}
function Fr(s, t) {
  const e = b;
  if (s instanceof xt)
    return new N(s);
  if (s instanceof C || s instanceof j)
    return s[e(258)](t || "center");
  if (A.isLikePoint(s)) {
    let n = s;
    return new N(new pt(n.x, n.y));
  }
  throw console[e(233)]("unknow linkTarget type:", s), new Error(e(266));
}
ke([p(b(262))], j.prototype, "className", 2), ke([p([0, 0.5])], j.prototype, b(170), 2), ke([p(3)], j[b(225)], "_pickPrecision", 2), ke([p(new An())], j.prototype, b(194), 2), ke([p(Fs.Link)], j[b(225)], "_zIndex", 2), ke([p(!0)], j.prototype, "isLink", 2), ke([p(["className", "isLink"])], j[b(225)], "_allwaysSerializers", 2), ke([p(lt[b(225)]._serializers[b(177)](["beginOffset", "endOffset"]))], j.prototype, "_serializers", 2);
const yt = no;
function no(s, t) {
  const e = so();
  return (no = function(n, r) {
    return e[n -= 333];
  })(s, t);
}
function so() {
  const s = ["2306262ygIuwT", "unknow host or anchor:", "end", "host", "66ZlbtLt", "2802680xHNmeX", "242037VxVNKY", "_invertWorldTransform", "segIndex", "equals", "toJSON", "168TUMIvB", "_obb", "33ruGjJa", "getAutoPointOnLink", "1213170ZJJtni", "getLocalPoint", "get", "unknow anchor type:", "point", "middle", "anchor", "271466pxcxwz", "isDisplayObjectHost", "4ividkS", "4110205CxFoum", "aabb", "getWorldTransform", "name", "assign", "4826754DfKoUO"];
  return (so = function() {
    return s;
  })();
}
(function() {
  const s = no, t = so();
  for (; ; )
    try {
      if (parseInt(s(354)) / 1 + -parseInt(s(361)) / 2 * (-parseInt(s(352)) / 3) + -parseInt(s(363)) / 4 * (parseInt(s(333)) / 5) + parseInt(s(338)) / 6 + parseInt(s(339)) / 7 + -parseInt(s(350)) / 8 * (parseInt(s(345)) / 9) + -parseInt(s(344)) / 10 * (parseInt(s(343)) / 11) === 771756)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class N {
  constructor(t, e) {
    this.anchor = t, this.host = e;
  }
  [yt(362)]() {
    return this.host instanceof lt;
  }
  toPoint() {
    const t = yt;
    return N.calcPointByAnchor(this[t(342)], this.anchor);
  }
  hasHost() {
    return this[yt(342)] != null;
  }
  isNodeHost() {
    return this.host instanceof C;
  }
  [yt(348)](t) {
    const e = yt;
    return this.anchor === t.anchor && this[e(342)] === t[e(342)];
  }
  static calcPointByAnchor(t, e) {
    const n = yt;
    if (t instanceof C)
      return N.getPointOnNodeHost(t, e);
    if (t instanceof j)
      return N.getPointOnLinkHost(t, e);
    if (t == null && e instanceof pt)
      return { x: e.x, y: e.y };
    throw console.error(n(340), t, e), new Error("unknow host or anchor");
  }
  static getPointOnNodeHost(t, e) {
    const n = yt;
    if (e instanceof De) {
      let r = t._drawContentDesc.shapeSize;
      return { x: e.x * r.width * 0.5, y: e.y * r.height * 0.5 };
    }
    if (e instanceof mt)
      return t._positionToLocalPoint(e[n(336)]);
    if (e instanceof pt)
      return t[n(335)]().pointXY(e.x, e.y);
    if (e instanceof Vt)
      return t.getLocalPoint(e.t, e.segIndex);
    if (e instanceof bt)
      return z.getFunction(e[n(336)])(t);
    throw new Error(n(357) + e);
  }
  static getPointOnLinkHost(t, e) {
    const n = yt;
    let r = e.takePoint();
    if (r != null)
      return r;
    if (e instanceof De)
      throw new Error("NDC坐标不能用于Link");
    if (e instanceof mt)
      throw new Error("方位坐标不能用于Link");
    if (e instanceof Vt)
      return t[n(355)](e.t, e[n(347)]);
    if (e instanceof pt)
      return { x: e.x, y: e.y };
    if (e instanceof bt)
      return z.getFunction(e.name)(t);
    throw new Error("unknow anchor type:" + e);
  }
  static getOnLinkPoint(t, e) {
    const n = yt;
    let r = t.begin == e ? t[n(341)] : t.begin, i = e.anchor, o = e.host, a = i.takePoint();
    if (a != null)
      return a;
    if (i instanceof bt)
      a = z.getFunction(i[n(336)])(o);
    else if (i instanceof Vt || i instanceof De || i instanceof mt) {
      let h = e.toPoint();
      a = N.toLinkLocalPoint(t, e.host, h);
    } else
      i instanceof pt ? (a = { x: i.x, y: i.y }, o != null && (a = N.toLinkLocalPoint(t, e.host, a))) : i instanceof ts && (a = N.getAutoPointOnLink(t, e, r), a = t._invertWorldTransform[n(358)](a));
    return a;
  }
  static [yt(353)](t, e, n) {
    const r = yt, i = e[r(342)];
    let o;
    if (n[r(360)] instanceof ts) {
      const a = n.host;
      o = { x: a._obb.aabb.center, y: a[r(351)][r(334)][r(359)] };
    } else
      o = N.getOnLinkPoint(t, n);
    return i.getConnectAutoPoint(o);
  }
  static toLinkLocalPoint(t, e, n) {
    const r = yt;
    if (e.parent === t.parent)
      n = e._getLocalTransform().point(n);
    else {
      let i = e[r(335)]().point(n);
      n = t[r(346)].point(i);
    }
    return n;
  }
  [yt(349)](t) {
    const e = yt;
    let n = this.anchor.toJSON();
    if (this.host == null)
      delete n.host;
    else if (t != null && this.isDisplayObjectHost()) {
      let r = t[e(356)](this.host);
      n[e(342)] = r;
    }
    return n;
  }
  static fromJSON(t, e) {
    const n = yt;
    let r = z.newInstance(t.className);
    Object[n(337)](r, t);
    let i = new N(r);
    if (e != null && typeof t.host == "number") {
      let o = e[n(356)](t.host);
      i.host = o;
    }
    return i;
  }
}
const L = ls;
(function() {
  const s = ls, t = ro();
  for (; ; )
    try {
      if (parseInt(s(406)) / 1 * (-parseInt(s(415)) / 2) + -parseInt(s(432)) / 3 + parseInt(s(384)) / 4 + parseInt(s(402)) / 5 * (parseInt(s(379)) / 6) + -parseInt(s(401)) / 7 + parseInt(s(422)) / 8 + parseInt(s(380)) / 9 === 382754)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var dl = Object.defineProperty, fl = Object.getOwnPropertyDescriptor, qt = (s, t, e, n) => {
  const r = ls;
  for (var i, o = n > 1 ? void 0 : n ? fl(t, e) : t, a = s[r(418)] - 1; a >= 0; a--)
    (i = s[a]) && (o = (n ? i(t, e, o) : i(o)) || o);
  return n && o && dl(t, e, o), o;
};
function ro() {
  const s = ["377625SrZzfj", "beginArrow", "fill", "skew", "dashed", "textAlign", "prototype", "DefaultConfig", "hasBackgroundColor", "fillText", "hitTest", "lineWidth", "textOffsetY", "className", "scaleY", "originPosition", "get", "parent", "_textDirty", "_getRotationOnParentLink", "_serializers", "width", "_text", "_computedStyle", "213024HgsNFG", "7633350VUdjZG", "text", "setSize", "draw", "747780xOADBC", "shapeIndexMap", "borderWidth", "_afterStyleComputed", "_drawContentDesc", "_isTextBlank", "_textArr", "_paintText", "getConnectAutoPoint", "rotation", "isEmpty", "scaleBy", "_textPosition", "max", "_state", "textRotation", "bottom", "4992883Vciklr", "105LLAnrl", "color", "textBaseline", "backgroundColor", "710926HXtewW", "_calcTextPosition", "height", "left", "destroy", "_strokeAndFill", "_textLineHeight", "hasBorder", "same parent, dont need change", "2GHqjOZ", "rotate", "Node", "length", "DefaultFont", "roundRect", "stroke", "1217160RyPFqz", "_calcOriginInParentLink", "scaleX", "fillStyle", "font", "origin", "getWorldTransform", "getRect", "getPointAnchor", "stage"];
  return (ro = function() {
    return s;
  })();
}
class C extends lt {
  constructor(t, e = 0, n = 0, r = 1, i = 1) {
    const o = ls;
    super(), this[o(398)] = { _needPaint: !0, _isOutOfViewport: !1, _attrDirty: !0, _textDirty: !1 }, this.originPosition = "center", this._drawContentDesc = { hasBorder: !1, hasBackgroundColor: !1, shapeSize: { width: 1, height: 1 } }, t != null && (this.text = t, this._state._textDirty = !0), this._x = e || 0, this._y = n || 0, this._width = r || 0, this._height = i || 0, this._obb.aabb = new O(e - 0.5 * r, n - 0.5 * i, r, i);
  }
  get [L(381)]() {
    return this._text;
  }
  set text(t) {
    this.setText(t);
  }
  _getShapeSize() {
    return this._drawContentDesc.shapeSize;
  }
  [L(430)](t, e) {
    return new N(new pt(t, e), this);
  }
  getSegmentAnchor(t, e) {
    return new N(new Vt(null, t, e), this);
  }
  getAnchor(t) {
    let e = this._shape.getConnectionAnchor(t);
    if (e == null)
      throw new Error("anchor not found:" + t);
    return new N(e, this);
  }
  setOriginOnLink(t, e = null) {
    return this.origin == null ? this.origin = [e, t] : (this.origin[0] = e, this.origin[1] = t), this._matrixDirty = !0, this;
  }
  _getOBBPoints() {
    this._updateShapeSize();
    let t = 0.5 * this.width, e = 0.5 * this.height, n = -t, r = -e;
    return [{ x: n, y: r }, { x: t, y: r }, { x: t, y: e }, { x: n, y: e }];
  }
  [L(387)]() {
    const t = L, e = this._computedStyle, n = this._drawContentDesc;
    n.hasBackgroundColor = e.backgroundColor != null, n[t(413)] = e[t(386)] > 0;
  }
  _afterUpdateMatrix() {
    const t = L;
    (this._matrixDirty || this._state[t(373)] || this._computedStyle[t(373)]) && (this._updateText(), this._state[t(373)] && (this[t(398)][t(373)] = !1, this.updateMatrix()), this._state._textDirty = !1, this._computedStyle._textDirty = !1);
  }
  _calcOriginInParentLink() {
    const t = this.parent;
    if (this === t.beginArrow || this === t.endArrow)
      return [0, 0];
    let e = this.origin[0], n = this.origin[1], r = t.getPoint(n, e);
    return [r.x, r.y];
  }
  [L(374)]() {
    const t = L, e = this.parent;
    if (e == null || e.deep < K.MinDeep || e.isNode || !this.rotateWithParent)
      return 0;
    let n = e;
    if (this === n[t(433)] || this === n.endArrow)
      return 0;
    let r = this[t(427)][0], i = this[t(427)][1];
    return e.getK(i, r);
  }
  _doTransform(t) {
    const e = L, n = this;
    if (n.isLink)
      throw new Error("link no transform");
    let r = n.rotation, i = n.x, o = n.y;
    if (n[e(372)]) {
      if (n.parent.isLink) {
        r += n._getRotationOnParentLink();
        let h = n[e(423)]();
        i = h[0] + n.x, o = h[1] + n.y;
      } else if (n.parent.isNode && this.originPosition != ne.center) {
        let h = this._positionToLocalPoint(this.originPosition);
        i += h.x, o += h.y;
      }
    }
    if (n.originPosition == ne.center)
      return t.rotate(r), void t.transform(n[e(424)], n.skewX, n.skewY, n[e(369)], i, o);
    let a = n._positionToLocalPoint(n.originPosition);
    t.rotateByXY(a.x, a.y, r), t.transform(n.scaleX, n.skewX, n.skewY, n.scaleY, i, o);
  }
  _updateShapeSize() {
    const t = L, e = this._computedStyle;
    let n = 2 * (e.borderWidth || 0) + (2 * (e.padding || 0) + (e.lineWidth || 0));
    const r = Math.max(0, this.width - n), i = Math.max(0, this.height - n);
    this[t(388)].shapeSize.width = r, this._drawContentDesc.shapeSize.height = i;
  }
  _localToNormal(t, e) {
    const n = L;
    let r = this[n(388)].shapeSize;
    return { x: t / Math[n(397)](0.5 * r.width, 1), y: e / Math.max(0.5 * r.height, 1) };
  }
  setText(t) {
    const e = L;
    if (t != this._text && (this._state._textDirty = !0, this._matrixDirty = !0), t == null)
      return this[e(377)] = t, void (this._textArr = null);
    if (typeof t == "number" && (t = "" + t), t.indexOf(`
`) != -1) {
      let n = t.split(`
`);
      this._textArr = n;
    } else
      this[e(390)] = null;
    this._text = t;
  }
  _calcTextSize() {
    const t = L;
    let e, n = this[t(390)] == null ? 1 : this._textArr.length, r = this._computedStyle.font;
    r == null && (r = this.ownerLayer ? this.ownerLayer[t(431)].styleSystem.currentTheme.getStyle(t(439))[t(426)] : Me[t(419)]), e = n == 1 ? Jt.measureText(this._text, this._computedStyle, n, r) : Jt.measureText(this[t(390)], this._computedStyle, n, r), this._textWidth = e[t(376)], this._textHeight = e.height, this._textLineHeight = e.lineHeight;
  }
  _drawBackgroundOrBorder(t) {
    const e = L, n = this[e(378)], r = this._drawContentDesc;
    let i = n[e(386)] || 0, o = 0.5 * -this.width + 0.5 * i, a = 0.5 * -this.height + 0.5 * i, h = this[e(376)] - i, l = this[e(408)] - i, c = n.borderRadius || 0;
    t.save(), t.beginPath(), c == 0 ? t.rect(o, a, h, l) : t[e(420)](o, a, h, l, c), r.hasBackgroundColor && (t[e(425)] = n[e(405)], t[e(434)]()), r.hasBorder && (n.padding == null || n.padding == 0 ? t.lineWidth = i + 0.5 : t[e(443)] = i, t.strokeStyle = n.borderColor || "black", (n.borderStyle == e(436) || n.borderStyle == "dotted") && t.setLineDash([1, 1]), t[e(421)]()), t.closePath(), t.restore();
  }
  [L(411)](t) {
    const e = L;
    let n = this._drawContentDesc;
    t.save(), (n.hasBorder || n[e(440)]) && this._drawBackgroundOrBorder(t), this._shape.draw(t, this), t.restore();
  }
  [L(383)](t) {
    this._computedStyle.applyTo(t), this._strokeAndFill(t), this._paintText(t);
  }
  _updateText() {
    const t = L;
    this._calcTextSize(), this[t(407)]();
  }
  _calcTextPosition(t = 0, e = 0) {
    const n = L;
    let r = this[n(378)], i = null;
    if (r.textPosition != null) {
      let l = Ki[n(371)](r.textPosition);
      i = { x: l.x * this.width * 0.5, y: l.y * this.height * 0.5 };
    } else
      i = { x: 0, y: 0.5 * this.height };
    let o = 0, a = 0.5 * -(this._textHeight - this._textLineHeight), h = t + e + 0.5 * r.lineWidth;
    return r.textAlign == n(409) ? o = h : r[n(437)] == "right" && (o = -h), r[n(404)] == "top" ? a = h : r[n(404)] == n(400) && (a = -h - this._textHeight + this._textLineHeight), i.x += o, i.y += a, r.textOffsetX != null && (i.x += r.textOffsetX), r.textOffsetY != null && (i.y += r[n(367)]), this._textPosition = i, i;
  }
  [L(391)](t) {
    const e = L;
    if (this[e(389)]())
      return;
    let n = this._text, r = this[e(378)], i = this[e(396)] || { x: 0, y: 0 }, o = this[e(390)];
    if (t.fillStyle = r[e(403)] || "black", this.textRotation == 0)
      if (o == null)
        t.fillText(n, i.x, i.y);
      else {
        let a = this._textLineHeight;
        for (let h = 0; h < o.length; h++)
          t.fillText(o[h], i.x, i.y + h * a);
      }
    else {
      if (t.translate(i.x, i.y), t[e(416)](this[e(399)]), o == null)
        t[e(441)](n, 0, 0);
      else {
        let a = this._textLineHeight;
        for (let h = 0; h < o.length; h++)
          t[e(441)](o[h], 0, 0 + h * a);
      }
      t.rotate(-this.text), t.translate(-i.x, -i.y);
    }
  }
  [L(392)](t) {
    const e = L;
    return this._shape[e(392)](t.x, t.y, this);
  }
  setOriginPosition(t) {
    return this[L(370)] = t, this;
  }
  translateWith(t, e) {
    return this.x += t, this.y += e, this;
  }
  translateTo(t, e) {
    return this.x = t, this.y = e, this;
  }
  translate(t, e) {
    return this.x = t, this.y = e, this;
  }
  setXY(t, e) {
    return this.x = t, this.y = e, this;
  }
  resize(t, e) {
    return this.width = t, this.height = e, this;
  }
  [L(382)](t, e) {
    return this[L(376)] = t, this.height = e, this;
  }
  [L(435)](t, e) {
    return this.skewX = t, this.skewY = e, this;
  }
  resizeWith(t, e) {
    const n = L;
    return this[n(376)] += t, this.height += e, this[n(376)] < 0 && (this[n(376)] = 0), this.height < 0 && (this.height = 0), this;
  }
  [L(395)](t, e) {
    return this.scaleX *= t, this.scaleY *= e, this;
  }
  scale(t, e) {
    return this.scaleX = t, this.scaleY = e, this;
  }
  rotate(t) {
    return this.rotation = t, this;
  }
  rotateWith(t) {
    return this.rotation += t, this;
  }
  [L(429)]() {
    const t = L;
    return new O(this.x - 0.5 * this[t(376)], this.y - 0.5 * this.height, this.width, this.height);
  }
  changeParent(t) {
    const e = L;
    if (this.parent === t)
      throw new Error(e(414));
    let n = this;
    n._matrixDirty && n.updateMatrix(), t._matrixDirty && t.updateMatrix();
    let r = n.localToWorldXY(0, 0), i = t.worldToLocalXY(r.x, r.y);
    return n.parent && n.parent.removeChild(n), n.setXY(i.x, i.y), t.addChild(n), this;
  }
  _positionToLocalPoint(t) {
    let e = Ds[t];
    if (e == null)
      throw Error("position not exist:" + t);
    return { x: e[0] * this.width * 0.5, y: e[1] * this.height * 0.5 };
  }
  _toJSON(t) {
    const e = L;
    let n = super._toJSON(t);
    if (t != null) {
      let r = t[e(385)];
      if (this._shape != null) {
        let i = r.get(this._shape);
        i != null && (n.shape = i);
      }
    }
    return n;
  }
  [L(442)](t, e) {
    return !this._isTextBlank() && this._getTextAABB().contains(t, e) ? !0 : !!this.getAABB().contains(t, e) && ht.isPointInPolygon({ x: t, y: e }, this._obb.points);
  }
  [L(389)]() {
    return this[L(381)] == null || this.text == "";
  }
  _getTextRect() {
    const t = L;
    if (this._isTextBlank())
      return new O(0, 0, 0, 0);
    let e = this, n = e.getComputedStyle(), r = e[t(396)], i = e._textArr == null ? 1 : e[t(390)].length, o = new O(r.x, r.y, e._textWidth, e._textHeight), a = n[t(437)], h = n.textBaseline;
    return a == t(409) ? o.x = r.x + 0.5 * o.width : a == "right" && (o.x = r.x - 0.5 * o.width), h == "top" ? o.y = r.y + 0.5 * o[t(408)] : h == "bottom" ? i > 1 ? o.y += 0.5 * o[t(408)] - this._textLineHeight : o.y = r.y - 0.5 * o[t(408)] : i > 1 && (o.y += 0.5 * o.height - 0.5 * this._textLineHeight), o.x -= 0.5 * o[t(376)], o.y -= 0.5 * o.height, o;
  }
  _getTextAABB() {
    const t = L;
    let e = this._getTextRect();
    if (e.isEmpty())
      return e;
    let n = this[t(428)](), r = e.toPoints(), i = n.points(r, r);
    return ce.toAABB(e, i);
  }
  _getAABBWithText() {
    const t = L;
    let e = this.getAABB(), n = null;
    return !this._isTextBlank() && (n = this._getTextAABB(), !n[t(394)]() && (e = O.union(n, e))), e;
  }
  [L(410)]() {
    const t = L;
    super.destroy(), this._shape = null, this[t(377)] = null, this._textArr = null, this._state = null;
  }
}
function ls(s, t) {
  const e = ro();
  return (ls = function(n, r) {
    return e[n -= 367];
  })(s, t);
}
qt([p("Node")], C.prototype, L(368), 2), qt([p(!0)], C[L(438)], "rotateWithParent", 2), qt([p(null)], C.prototype, "_text", 2), qt([p(null)], C.prototype, "_textArr", 2), qt([p(0)], C.prototype, "_textWidth", 2), qt([p(0)], C.prototype, "_textHeight", 2), qt([p(0)], C[L(438)], L(412), 2), qt([p(!0)], C.prototype, "isNode", 2), qt([p(Fs[L(417)])], C.prototype, "_zIndex", 2), qt([p(0)], C.prototype, L(399), 2), qt([p(lt[L(438)][L(375)].concat(["text", "x", "y", "width", L(408), "skewX", "skewY", "scaleX", "scaleY", L(393), "textOffsetX", L(367), "textRotation", "originPosition", "rotateWithParent"]))], C.prototype, "_serializers", 2);
const $t = On;
function io() {
  const s = ["aabb", "points", "resizeToFitText", "_autoDirection", "1782783ArcJNm", "toAABB", "_serializers", "bottom", "1470666ZCoTGY", "length", "601122zdbyar", "4432776CrIknj", "width", "_computedStyle", "lineWidth", "65hCtddj", "102712RTtays", "_updateText", "478681DhICKB", "computePadding", "_calcTextSize", "textPosition", "59043dKfalQ", "autoDirection", "className", "rotation", "_autoSize", "2Pjpeaq", "prototype"];
  return (io = function() {
    return s;
  })();
}
(function() {
  const s = On, t = io();
  for (; ; )
    try {
      if (-parseInt(s(194)) / 1 + -parseInt(s(199)) / 2 * (-parseInt(s(211)) / 3) + parseInt(s(188)) / 4 * (parseInt(s(187)) / 5) + parseInt(s(209)) / 6 + -parseInt(s(190)) / 7 + -parseInt(s(212)) / 8 + parseInt(s(205)) / 9 === 295863)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var gl = Object.defineProperty, yl = Object.getOwnPropertyDescriptor, Xa = (s, t, e, n) => {
  const r = On;
  for (var i, o = n > 1 ? void 0 : n ? yl(t, e) : t, a = s[r(210)] - 1; a >= 0; a--)
    (i = s[a]) && (o = (n ? i(t, e, o) : i(o)) || o);
  return n && o && gl(t, e, o), o;
};
class en extends C {
  constructor(t, e = 0, n = 0, r = 1, i = 1, o = !0) {
    const a = On;
    super(t, e, n, r, i), this._autoDirection = !0, this[a(198)] = !0, this.autoSize = o;
  }
  get autoSize() {
    return this[On(198)];
  }
  set autoSize(t) {
    this._autoSize = t;
  }
  get [$t(195)]() {
    return this[$t(204)];
  }
  set autoDirection(t) {
    const e = $t;
    this[e(204)] !== t && (this[e(204)] = t, this._updateText());
  }
  updateMatrix() {
    const t = $t, e = this;
    if (e.autoDirection == 1) {
      let n = e._getRotationOnParentLink();
      n < -Math.PI / 2 || n > Math.PI / 2 ? e.rotation !== Math.PI && (e.rotation = Math.PI) : e[t(197)] !== 0 && (e.rotation = 0);
    }
    return super.updateMatrix(), this;
  }
  [$t(189)]() {
    const t = $t;
    this[t(192)](), this._autoSize && this[t(203)](), this._calcTextPosition();
  }
  resizeToFitText() {
    const t = $t;
    let e = this[t(185)][t(191)]();
    this[t(213)] = this._textWidth + e, this.height = this._textHeight + e;
    let n = this._getOBBPoints(), r = this._worldTransform.points([], n), i = this._obb;
    return i[t(202)] = r, i.aabb = ce[t(206)](i[t(201)], r), this;
  }
  _calcTextPosition() {
    const t = $t, e = this._computedStyle;
    let n = e.borderWidth || 0, r = (e.padding || 0) + (0 | e[t(186)]);
    return (e.textBaseline != t(208) || e.textPosition != "lt" && e.textPosition != "ct" && e.textPosition != "rt") && (e.textBaseline != "top" || e.textPosition != "lb" && e.textPosition != "cb" && e.textPosition != "rb") && (e.textAlign != "right" || e[t(193)] != "lt" && e[t(193)] != "lm" && e.textPosition != "lb") ? e.textAlign == "left" && (e.textPosition == "rt" || e.textPosition == "rm" || e.textPosition == "rb") && (n = 0, r = 0) : (n = 0, r = 0), super._calcTextPosition(n, r);
  }
}
function On(s, t) {
  const e = io();
  return (On = function(n, r) {
    return e[n -= 185];
  })(s, t);
}
function dn(s, t) {
  const e = oo();
  return (dn = function(n, r) {
    return e[n -= 101];
  })(s, t);
}
Xa([p("TextNode")], en.prototype, $t(196), 2), Xa([p(C.prototype[$t(207)].concat(["autoSize", "autoDirection"]))], en[$t(200)], "_serializers", 2), function() {
  const s = dn, t = oo();
  for (; ; )
    try {
      if (parseInt(s(125)) / 1 + -parseInt(s(126)) / 2 + -parseInt(s(115)) / 3 + -parseInt(s(108)) / 4 * (parseInt(s(123)) / 5) + -parseInt(s(112)) / 6 * (parseInt(s(118)) / 7) + parseInt(s(111)) / 8 + parseInt(s(109)) / 9 * (parseInt(s(107)) / 10) === 684721)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
}();
class ml {
  constructor(t, e) {
    this[dn(101)] = t, this.animationSystem = e;
  }
  flash(t, e = {}) {
    const n = dn;
    let r = e.times || 3, i = e.duration || 100, o = this[n(116)], a = t[n(103)].globalAlpha, h = o[n(124)]({ from: [0], to: [1], update: (l) => {
      const c = n;
      t.setStyle(c(120), l[0]);
    }, times: r, effect: "easeOutBounce", duration: i });
    return h.onEnd = () => {
      t.setStyle("globalAlpha", a);
    }, h;
  }
  flow(t, e = {}) {
    const n = dn;
    let r = e[n(122)] || t[n(103)].lineDash || [3, 2], i = e[n(113)] || Dt.clockwise, o = e.duration || 1e4, a = e.distance || 300, h = i == Dt.clockwise ? 1 : -1, l = this.animationSystem;
    t.setStyle("lineDash", r);
    let c = l.anime({ from: 0, to: a, update: (u) => {
      t[n(104)]("lineDashOffset", -u * h);
    }, times: 1 / 0, duration: o });
    return c[n(106)] = () => {
      const u = n;
      t.setStyle(u(105), 0);
    }, c;
  }
  linkMark(t, e = { color: "red" }) {
    const n = dn;
    let r = e.text || "❌️", i = new en(r, 0, 0);
    return i.type = n(119), i.draggable = !1, i[n(117)]({ textPosition: ne.center, textBaseline: Tt[n(114)], textAlign: Ot.center, color: e.color || n(121) }), e[n(110)] != null && i.setStyles({ font: e.font }), i[n(102)](0.5), t.addChild(i), i;
  }
}
function oo() {
  const s = ["20279530sdLKYg", "550136CfQSFP", "9jmqVof", "font", "3690576GqsiJL", "1526202QWugrD", "direction", "middle", "3637155mHjozS", "animationSystem", "setStyles", "21KgrMMO", "EffectNode", "globalAlpha", "red", "lineDash", "15FnQiEh", "anime", "786176HWWCTE", "405284qqBQmX", "stage", "setOriginOnLink", "style", "setStyle", "lineDashOffset", "onEnd"];
  return (oo = function() {
    return s;
  })();
}
function ao() {
  const s = ["259742knYzeL", "204loBUqn", "865WbUADC", "28844XBaatU", "626wPDtiq", "4411trcpaa", "12429Czdlqy", "2232daHXGq", "627657EqXOvO", "36jfUWvg", "31830RvDiXP", "1288OsucGJ", "5989893NTHGTE"];
  return (ao = function() {
    return s;
  })();
}
(function() {
  const s = Ih, t = ao();
  for (; ; )
    try {
      if (-parseInt(s(442)) / 1 + -parseInt(s(438)) / 2 * (parseInt(s(440)) / 3) + parseInt(s(437)) / 4 * (parseInt(s(436)) / 5) + parseInt(s(435)) / 6 * (parseInt(s(434)) / 7) + parseInt(s(432)) / 8 * (-parseInt(s(441)) / 9) + parseInt(s(431)) / 10 * (-parseInt(s(439)) / 11) + parseInt(s(430)) / 12 * (parseInt(s(433)) / 13) === 650663)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
let Kn = { paintAABB: !1, debugInfo: null, build: "11:50:57 AM" };
function Ih(s, t) {
  const e = ao();
  return (Ih = function(n, r) {
    return e[n -= 430];
  })(s, t);
}
const br = Ve;
function Ve(s, t) {
  const e = ho();
  return (Ve = function(n, r) {
    return e[n -= 222];
  })(s, t);
}
(function() {
  const s = Ve, t = ho();
  for (; ; )
    try {
      if (parseInt(s(238)) / 1 + -parseInt(s(248)) / 2 + parseInt(s(235)) / 3 + -parseInt(s(226)) / 4 * (parseInt(s(253)) / 5) + -parseInt(s(250)) / 6 * (parseInt(s(233)) / 7) + parseInt(s(239)) / 8 + parseInt(s(236)) / 9 === 820496)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Il {
  constructor(t) {
    const e = Ve;
    this._debug = Kn, this.numberFixed = 0, this[e(228)] = t;
  }
  init() {
    const t = Ve, e = document.createElement(t(230));
    e.classList.add("jtopo_debugPanel"), this.stage.uiContainer.appendChild(e), this.domElement = e, this[t(243)]();
  }
  start(t = 24) {
    const e = Ve, n = this, r = this.stage;
    this[e(247)] = setInterval(function() {
      const i = Ve;
      let o = r[i(224)];
      if (o[i(223)])
        return;
      let a = r.viewLayers, h = 0, l = 0, c = 0;
      for (let I = 0; I < a.length; I++) {
        let x = a[I];
        h += x[i(252)].length, l += x.getAllNodes().length, c += x.getAllLinks().length;
      }
      let u = Math[i(231)](o.x), f = Math[i(231)](o.y);
      const g = r[i(224)].target;
      let y = "<li>Mouse-Canvas( x: " + u + " y: " + f + ")</li>";
      if (o.xInWorld != null && (y += "<li>Mouse-World( x: " + o.xInWorld.toFixed(2) + " y: " + o[i(245)].toFixed(2) + ")</li>"), y += i(234) + l + "</li>", y += i(242) + c + "</li>", y += "<li>Total: " + (l + c) + i(229), y += i(237) + h + "</li>", g) {
        const I = g._obb.aabb, x = g.localToWorldXY(0, 0), m = this.stage.camera.toScreenXY(x.x, x.y), w = this.numberFixed;
        y += "<li>_aabb:[x:" + I.x.toFixed(w) + i(244) + I.y.toFixed(w) + ",w: " + I.width.toFixed(w) + ", h:" + I[i(246)].toFixed(w) + "] </li>", y += "<li>Origin: [" + g.origin[0].toFixed(w) + ", " + g.origin[1].toFixed(w) + "]</li>", y += "<li>&nbsp;&nbsp;-Canvas: (x: " + m.x.toFixed(w) + ", y: " + m.y.toFixed(w) + i(232), g instanceof C && (y += "<li>&nbsp;&nbsp;-Parent: (x: " + g.x[i(225)](w) + ", y: " + g.y.toFixed(w) + ") </li>"), y += i(227) + x.x.toFixed(w) + ", y: " + x.y.toFixed(w) + i(232);
      }
      Kn[i(240)] && (y += "<li>" + Kn.debugInfo + "</li>"), n.setContent(y);
    }, t);
  }
  [br(249)](t) {
    this.domElement.innerHTML = t;
  }
  checkDom() {
    const t = br;
    this[t(222)] == null && this[t(251)]();
  }
  hide() {
    return this.checkDom(), clearInterval(this._timer), this.domElement.style.display = "none", this;
  }
  [br(241)](t) {
    return this.checkDom(), this.domElement.style.display = "block", this.start(t), this;
  }
}
function ho() {
  const s = ["yInWorld", "height", "_timer", "1159230DvoNGf", "setContent", "468wEnxKj", "init", "displayList", "245hkUQvq", "domElement", "isIdle", "inputSystem", "toFixed", "58412DOBNjg", "<li>&nbsp;&nbsp;-Layer:  (x: ", "stage", "</li>", "div", "ceil", ") </li>", "29267KlpKZN", "<li>Nodes: ", "1800147XnzhDy", "2134278WUfpNH", "<li>Painted: ", "329012eeMpdk", "10204584iOWcdx", "debugInfo", "show", "<li>Links: ", "hide", ",y: "];
  return (ho = function() {
    return s;
  })();
}
const oe = mn;
function mn(s, t) {
  const e = lo();
  return (mn = function(n, r) {
    return e[n -= 485];
  })(s, t);
}
(function() {
  const s = mn, t = lo();
  for (; ; )
    try {
      if (-parseInt(s(497)) / 1 * (-parseInt(s(490)) / 2) + parseInt(s(499)) / 3 + parseInt(s(496)) / 4 + -parseInt(s(503)) / 5 + -parseInt(s(502)) / 6 + -parseInt(s(489)) / 7 + parseInt(s(501)) / 8 === 801090)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class In {
  constructor(t = 0, e = 0, n = 1, r = 1) {
    const i = mn;
    this.x = 0, this.y = 0, this[i(491)] = 1, this.height = 1, this.rect = new O(0, 0, 1, 1), this[i(505)] = [], this.object = null, this.level = 0, this.x = t, this.y = e, this.width = n, this[i(487)] = r;
  }
  fromObject(t) {
    this[mn(492)] = t, this.x = t.x, this.y = t.y, this.width = t.width, this.height = t.height;
  }
  setObject(t) {
    this.object = t;
  }
  getRect(t = !1) {
    const e = mn;
    return this.rect.setTo(this.x, this.y, this[e(491)], this[e(487)]), t ? O[e(486)](this.rect, this[e(488)](!0)) : this.rect;
  }
  [oe(488)](t) {
    const e = oe;
    let n = this[e(505)], r = n[0].getRect(t);
    for (let i = 1; i < n[e(485)]; i++)
      r = O.union(r, n[i].getRect(t));
    return r;
  }
  [oe(504)](t, e) {
    this.x += t, this.y += e;
  }
  translate(t, e) {
    this.x = t, this.y = e;
  }
  addChild(t) {
    const e = oe;
    t.parent = this, this[e(505)].push(t);
  }
  translateWithRecursive(t, e) {
    this.translateWith(t, e);
    let n = this.children;
    for (let r = 0; r < n.length; r++)
      n[r].translateWithRecursive(t, e);
  }
  [oe(506)](t) {
    const e = oe;
    let n = [];
    for (let r = 0; r < this.children.length; r++) {
      let i = this.children[r];
      if ((t == null || t(i) == 1) && (n.push(i), i.children && i.children.length > 0)) {
        let o = In[e(506)](i.children, t);
        n = n.concat(o);
      }
    }
    return n;
  }
  toString() {
    const t = oe;
    return this[t(492)].text + t(500) + In.flatten(this[t(505)]).map((e) => e[t(492)].text)[t(498)](",");
  }
  static [oe(493)](t) {
    const e = oe;
    let n = t[0][e(494)]();
    for (let r = 1; r < t[e(485)]; r++)
      n = O[e(486)](n, t[r].getRect());
    return n;
  }
  static flatten(t, e) {
    const n = oe;
    let r = [];
    for (let i = 0; i < t.length; i++) {
      let o = t[i];
      if ((e == null || e(o) == 1) && (r.push(o), o[n(505)] && o.children.length > 0)) {
        let a = In[n(506)](o.children, e);
        r = r[n(495)](a);
      }
    }
    return r;
  }
}
function lo() {
  const s = ["107794xvLSkt", "width", "object", "getVNodeUnionRect", "getRect", "concat", "3835012VPPXjL", "2zWYclq", "join", "4736364OOZuRZ", ": 	", "9534944GgrLvh", "1268604DKmfOq", "7959775ynzUCa", "translateWith", "children", "flatten", "length", "union", "height", "getChildrenRect", "8629068anVJMH"];
  return (lo = function() {
    return s;
  })();
}
function ae(s, t) {
  const e = co();
  return (ae = function(n, r) {
    return e[n -= 143];
  })(s, t);
}
const wr = ae;
(function() {
  const s = ae, t = co();
  for (; ; )
    try {
      if (parseInt(s(150)) / 1 * (-parseInt(s(166)) / 2) + parseInt(s(158)) / 3 * (parseInt(s(159)) / 4) + parseInt(s(155)) / 5 * (-parseInt(s(148)) / 6) + -parseInt(s(151)) / 7 * (-parseInt(s(147)) / 8) + -parseInt(s(154)) / 9 + -parseInt(s(146)) / 10 * (-parseInt(s(165)) / 11) + parseInt(s(163)) / 12 === 878247)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class xl {
  constructor(t) {
    const e = ae;
    this[e(167)] = 0, this[e(152)] = t, this.descendants = t.flatten(), this.allVirtualNodes = [t].concat(this[e(168)]), this[e(164)] = this.allVirtualNodes.map((n) => n[e(157)]), this.indexData = [], this.index();
  }
  index() {
    const t = ae;
    let e = [];
    const n = this;
    (function r(i, o) {
      const a = ae;
      n.deep < o && (n[a(167)] = o);
      let h = i.children, l = e[o];
      l == null && (l = [], e[o] = l), l.push(i);
      for (let c = 0; c < h.length; c++)
        r(h[c], o + 1);
    })(this[t(152)], 0), this[t(143)] = e;
  }
  getRect() {
    const t = ae, e = this[t(152)].flatten();
    if (e.length == 0)
      throw new Error("getRect() in empty tree");
    let n = e[0].getRect();
    for (let r = 1; r < e[t(162)]; r++) {
      const i = e[r];
      n = O[t(160)](n, i.getRect());
    }
    return n;
  }
  centerTo(t, e) {
    const n = ae, r = this.allVirtualNodes;
    let i = this.root.getRect();
    r.forEach((l) => {
      const c = ae;
      i = O.union(i, l[c(145)]());
    });
    let o = i[n(153)](), a = t - o.x, h = e - o.y;
    return r.forEach((l) => {
      l.translateWith(a, h);
    }), this;
  }
  [wr(144)](t, e) {
    const n = wr, r = this[n(149)];
    let i = this[n(152)][n(145)]();
    r.forEach((h) => {
      const l = n;
      i = O.union(i, h[l(145)]());
    });
    let o = t - i.x, a = e - i.y;
    return r[n(156)]((h) => {
      h[n(161)](o, a);
    }), this;
  }
  translateWith(t, e) {
    return this.allVirtualNodes.forEach((n) => {
      n[ae(161)](t, e);
    }), this;
  }
  getLeafs() {
    const t = wr;
    return this[t(143)][this[t(167)]];
  }
}
function co() {
  const s = ["11CAUbla", "398306ruSAUf", "deep", "descendants", "indexData", "translateTo", "getRect", "12864220xHdASm", "6292864KzqAiW", "138gWbogf", "allVirtualNodes", "4qpuMGt", "7PyWZwJ", "root", "getCenter", "6050529eNwyiU", "247595ScFsQZ", "forEach", "object", "998793yEKVzM", "16odNysv", "union", "translateWith", "length", "975876aOEQdk", "allObjects"];
  return (co = function() {
    return s;
  })();
}
const Q = cs;
(function() {
  const s = cs, t = uo();
  for (; ; )
    try {
      if (parseInt(s(461)) / 1 * (-parseInt(s(448)) / 2) + -parseInt(s(452)) / 3 * (parseInt(s(445)) / 4) + -parseInt(s(454)) / 5 * (parseInt(s(465)) / 6) + parseInt(s(447)) / 7 + -parseInt(s(459)) / 8 * (parseInt(s(463)) / 9) + parseInt(s(469)) / 10 * (parseInt(s(476)) / 11) + parseInt(s(471)) / 12 === 294278)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class xn {
  constructor() {
    const t = cs;
    this.inputs = [], this[t(444)] = [];
  }
  [Q(449)]() {
    return this.getInDegree() + this.getOutDegree();
  }
  getInDegree() {
    return this.inputs.length;
  }
  getOutDegree() {
    return this.outputs.length;
  }
  getAdjacentList() {
    const t = Q;
    let e = this[t(444)][t(473)]((r) => r.to), n = this.inputs.map((r) => r.from);
    return e.concat(n);
  }
}
function uo() {
  const s = ["vertexes", "670sobEvo", "edges", "11714508kYwQnC", "hasDirection", "map", "forEach", "filter", "29513aOLUJT", "add", "outputs", "1691364fZCaJN", "isAlone", "2596755Zomudu", "2zoCJhb", "getDegree", "isClose", "length", "3ESBBnn", "has", "5agPadC", "travelNext", "isTree", "assert", "push", "988888igZLsU", "getMaxDegreeVertext", "30301jtWPNp", "from", "18cyYnBi", "slice", "3193758alUvnc", "depth", "isZero"];
  return (uo = function() {
    return s;
  })();
}
class Hr {
  constructor(t, e) {
    const n = Q;
    this.weight = 0, this.from = t, this.to = e, t.outputs.push(this), e.inputs[n(458)](this);
  }
  isLoop() {
    return this[Q(462)] === this.to;
  }
  isAdjacent(t) {
    const e = Q;
    return this[e(462)] === t.from || this.from === t.to || this.to === t[e(462)] || this.to === t.to;
  }
}
class bl {
  constructor(t) {
    this.vertexes = t;
  }
  isClose(t) {
    return !1;
  }
  isTrace(t) {
    return !1;
  }
  isCircuit(t) {
    return this[Q(450)](t) && this.isTrace(t);
  }
  isTrack(t) {
    return !1;
  }
  isCycle(t) {
    return this[Q(450)](t) && this.isTrack(t);
  }
}
function cs(s, t) {
  const e = uo();
  return (cs = function(n, r) {
    return e[n -= 444];
  })(s, t);
}
class es {
  constructor(t, e) {
    this.hasDirection = !0, this.vertexes = t, this.edges = e;
  }
  [Q(467)]() {
    const t = Q;
    return this.vertexes[t(451)] > 0 && this.edges.length == 0;
  }
  [Q(446)]() {
    const t = Q;
    return this[t(468)].length == 1 && this[t(470)][t(451)] == 0;
  }
  traverse(t, e = "depth", n = [], r = /* @__PURE__ */ new Set()) {
    const i = Q;
    t == null && (t = this.vertexes[0]);
    let o = this;
    if (!r.has(t) && (n.push(t), r[i(477)](t)), e == i(466))
      t.getAdjacentList().filter((a) => !r[i(453)](a)).map((a) => {
        const h = i;
        !r[h(453)](a) && (n.push(a), r[h(477)](a)), o.traverse(a, e, n, r);
      });
    else {
      let a = t.getAdjacentList().filter((h) => !r.has(h));
      a[i(473)]((h) => {
        n[i(458)](h), r.add(h);
      }), a.map((h) => {
        o.traverse(h, e, n, r);
      });
    }
    return n;
  }
  [Q(460)]() {
    const t = Q;
    let e = this.vertexes[0];
    for (let n = 1; n < this[t(468)][t(451)]; n++) {
      const r = this.vertexes[n];
      r[t(449)]() > e[t(449)]() && (e = r);
    }
    return e;
  }
  getMinDegree() {
    const t = Q;
    let e = this.vertexes[0].getDegree();
    for (let n = 1; n < this[t(468)].length; n++) {
      const r = this.vertexes[n];
      r[t(449)]() < e && (e = r[t(449)]());
    }
    return e;
  }
  getPathList(t, e, n = /* @__PURE__ */ new Set()) {
    return [];
  }
  getOrder() {
    return this[Q(468)].length;
  }
  isBridge() {
  }
  isSubGraph(t) {
  }
  [Q(456)]() {
    const t = Q;
    return this.vertexes.length != this.edges[t(451)] + 1 ? !1 : this.vertexes.length == 1 ? !0 : this[t(468)][t(475)]((e) => e.getDegree() == 1).length > 0;
  }
  [Q(455)](t) {
    let e = [];
    return function n(r) {
      const i = cs;
      e.push(r);
      let o = r[i(444)][i(473)]((a) => a.to);
      for (let a = 0; a < o.length; a++) {
        let h = o[a];
        if (h === t)
          return;
        n(h);
      }
    }(t), e;
  }
  clone() {
    const t = Q;
    let e = this[t(468)].slice();
    e[t(474)]((i) => {
      const o = t;
      i.inputs = i.inputs.slice(), i.outputs = i[o(444)][o(464)]();
    });
    let n = this.edges[t(464)](), r = new es(e, n);
    return r[t(472)] = this[t(472)], r;
  }
  check() {
    const t = Q;
    let e = 0;
    this.vertexes[t(474)]((r) => e += r[t(449)]()), console.assert(e == 2 * this[t(470)][t(451)]);
    let n = this.vertexes.filter((r) => r.getDegree() % 2 != 0).length;
    console[t(457)](n % 2 == 0);
  }
}
const Le = bn;
function po() {
  const s = ["add", "forEach", "fromObject", "getNodes", "travelVertext", "concat", "filter", "host", "weight", "2088088bCwiFB", "get", "1061140wTQPwa", "2PtaQfF", "set", "6urmlir", "22mhiWas", "1238876CVaeya", "push", "edges", "has", "10YrLaOC", "from", "18EWwbvB", "1341006uYRyDi", "map", "object", "3671185cJwNaY", "getOutDegree", "toGraphs", "2550924jXuXvl", "196617jNbNSd", "vertexes"];
  return (po = function() {
    return s;
  })();
}
function bn(s, t) {
  const e = po();
  return (bn = function(n, r) {
    return e[n -= 187];
  })(s, t);
}
(function() {
  const s = bn, t = po();
  for (; ; )
    try {
      if (-parseInt(s(196)) / 1 * (parseInt(s(210)) / 2) + parseInt(s(189)) / 3 + -parseInt(s(214)) / 4 * (-parseInt(s(218)) / 5) + -parseInt(s(212)) / 6 * (-parseInt(s(192)) / 7) + -parseInt(s(207)) / 8 * (parseInt(s(188)) / 9) + -parseInt(s(209)) / 10 + -parseInt(s(213)) / 11 * (parseInt(s(195)) / 12) === 340988)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Tn {
  static createMinimalSpanningTree(t) {
    const e = bn;
    let n = [], r = [], i = t.edges.sort((a, h) => {
      const l = bn;
      let c = a.weight - h[l(206)];
      return c == 0 && (c = a.from.getInDegree() - h[l(187)].getInDegree(), c == 0 && (c = h.to.getOutDegree() - a.to[l(193)]())), c;
    }), o = /* @__PURE__ */ new WeakMap();
    for (let a = 0; a < i.length; a++) {
      const h = i[a];
      let l = h.from, c = h.to, u = o.get(l), f = o.get(c);
      if (u != null && f != null)
        continue;
      u == null && (u = new xn(), u.object = l.object, n[e(215)](u), o[e(211)](l, u)), f == null && (f = new xn(), f.object = c.object, n.push(f), o.set(c, f));
      let g = new Hr(u, f);
      g.object = h[e(191)], r.push(g);
    }
    return new es(n, r);
  }
  [Le(201)](t) {
    const e = Le;
    return t[e(197)].map((n) => n[e(191)]);
  }
  getLinks(t) {
    const e = Le;
    return t[e(216)].map((n) => n[e(191)]);
  }
  objectsToGraphs(t) {
    const e = Le, n = t.filter((h) => h instanceof C);
    let r = t.filter((h) => h instanceof j);
    r.filter((h) => h.begin.isNodeHost() && h.end.isNodeHost());
    const i = /* @__PURE__ */ new WeakMap(), o = n.map((h) => {
      const l = bn, c = new xn();
      return c.object = h, i[l(211)](h, c), c;
    });
    r.filter((h) => i.get(h.begin.host) && i.get(h.end.host));
    const a = r[e(190)]((h) => {
      let l = i.get(h.begin.host), c = i.get(h.end.host), u = new Hr(l, c);
      return u.object = h, u;
    });
    return this[e(194)](o, a);
  }
  toGraphs(t, e) {
    const n = Le;
    let r = [];
    t[n(199)]((a) => {
      const h = n;
      let l = a.inputs, c = a.outputs;
      r = r[h(203)](l), r = r[h(203)](c);
    });
    let i = [], o = /* @__PURE__ */ new Set();
    for (let a = 0; a < t.length; a++) {
      const h = t[a];
      if (o.has(h))
        continue;
      let l = [], c = [];
      this.travelVertext(h, l, c, o);
      let u = new es(l, c);
      i[n(215)](u);
    }
    return i;
  }
  [Le(202)](t, e = [], n = [], r = /* @__PURE__ */ new Set()) {
    const i = Le;
    if (r[i(217)](t))
      return;
    e.push(t), r.add(t);
    let o = t.inputs.filter((l) => !r[i(217)](l)), a = t.outputs[i(204)]((l) => !r.has(l));
    o[i(199)]((l) => {
      const c = i;
      n.push(l), r[c(198)](l);
    }), a[i(199)]((l) => {
      const c = i;
      n.push(l), r[c(198)](l);
    });
    let h = this;
    o[i(199)]((l) => {
      h.travelVertext(l.from, e, n, r);
    }), a.forEach((l) => {
      h.travelVertext(l.to, e, n, r);
    });
  }
  toTree(t) {
    const e = Le;
    !t.isTree() && (t = Tn.createMinimalSpanningTree(t));
    let n = t.vertexes.filter((h) => h.getInDegree() == 0)[0][e(191)], r = t[e(197)].map((h) => h.object), i = t.edges[e(190)]((h) => h.object);
    const o = /* @__PURE__ */ new WeakMap();
    let a = new In();
    return a[e(200)](n), o.set(n, a), r.forEach((h) => {
      const l = e;
      if (h === n)
        return;
      const c = new In();
      c[l(200)](h), o[l(211)](h, c);
    }), i.forEach((h) => {
      const l = e;
      let c = o[l(208)](h.begin[l(205)]), u = o.get(h.end.host);
      c.addChild(u);
    }), new xl(a);
  }
}
const fe = Te;
function fo() {
  const s = ["15tyAZpv", "pairwise", "filter", "151734tESsJy", "observers", "shift", "subscribe", "push", "unsubscribe", "32JLuuJI", "build", "distinct", "10tFBOXh", "740076jveVli", "bufferCount", "重复订阅", "removeEventListener", "63GPcmym", "1467eraSaZ", "52NeKBhd", "1071612DqfibK", "8XFmHQE", "-#distinct#-", "log", "3737304QugJwT", "3594151DlKNWR", "787824fDXUUE", "publish"];
  return (fo = function() {
    return s;
  })();
}
(function() {
  const s = Te, t = fo();
  for (; ; )
    try {
      if (parseInt(s(128)) / 1 * (-parseInt(s(119)) / 2) + parseInt(s(130)) / 3 + parseInt(s(123)) / 4 * (-parseInt(s(110)) / 5) + -parseInt(s(113)) / 6 * (-parseInt(s(127)) / 7) + -parseInt(s(131)) / 8 * (-parseInt(s(106)) / 9) + -parseInt(s(122)) / 10 * (parseInt(s(107)) / 11) + parseInt(s(108)) / 12 * (parseInt(s(129)) / 13) === 357399)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Ne {
  constructor() {
    this.observers = [];
  }
  publish(t) {
    return this.observers.forEach((e) => {
      e(t);
    }), this;
  }
  subscribe(t) {
    const e = Te;
    if (this.observers.indexOf(t) != -1)
      throw new Error(e(125));
    return this.observers[e(117)](t), this;
  }
  [fe(120)](t) {
    let e = new Ne();
    return this.subscribe((n) => {
      t(e, n);
    }), e;
  }
  [fe(112)](t) {
    return this.build((e, n) => {
      t(n) && e.publish(n);
    });
  }
  map(t) {
    return this.build((e, n) => {
      e[Te(109)](t(n));
    });
  }
  reduce(t, e) {
    let n = e, r = !0;
    return this.build((i, o) => {
      r && e == null ? (r = !1, n = o) : n = t(o, n), i.publish(n);
    });
  }
  [fe(121)]() {
    const t = fe;
    let e = t(132);
    return this.build((n, r) => {
      e !== r && (e = r, n[t(109)](r));
    });
  }
  debounceTime(t) {
    let e;
    return this.build((n, r) => {
      e != null && clearTimeout(e), e = setTimeout(() => {
        n.publish(r);
      }, t);
    });
  }
  throttleTime(t) {
    let e = 0;
    return this.build((n, r) => {
      const i = Date.now();
      i - e >= t && (n.publish(r), e = i);
    });
  }
  delay(t) {
    return this[fe(120)]((e, n) => {
      setTimeout(() => {
        e[Te(109)](n);
      }, t);
    });
  }
  pairwise(t = 2) {
    return this.bufferCount(t, 1);
  }
  [fe(124)](t, e = 1) {
    const n = fe;
    let r = [];
    return this[n(120)]((i, o) => {
      const a = n;
      if (r[a(117)](o), r.length == t) {
        i[a(109)](r);
        for (let h = 0; h < e; h++)
          r[a(115)]();
      }
    });
  }
  [fe(118)]() {
    this[fe(114)].length = 0;
  }
  static fromEvent(t, e) {
    let n = new Ne(), r = (i) => {
      n.publish(i);
    };
    return t.addEventListener(e, r), n.unsubscribe = () => {
      t[Te(126)](e, r);
    }, n;
  }
  static of(...t) {
    let e, n = new Ne();
    return n.subscribe = function(r) {
      return this[Te(114)].push(r), e = setTimeout(() => {
        t.forEach((i) => n.publish(i));
      }, 10), this;
    }, n.unsubscribe = () => {
      clearTimeout(e);
    }, n;
  }
}
function Te(s, t) {
  const e = fo();
  return (Te = function(n, r) {
    return e[n -= 106];
  })(s, t);
}
function ns(s, t) {
  const e = go();
  return (ns = function(n, r) {
    return e[n -= 454];
  })(s, t);
}
const Ee = ns;
(function() {
  const s = ns, t = go();
  for (; ; )
    try {
      if (-parseInt(s(461)) / 1 * (-parseInt(s(467)) / 2) + parseInt(s(486)) / 3 * (parseInt(s(479)) / 4) + parseInt(s(469)) / 5 * (parseInt(s(470)) / 6) + -parseInt(s(454)) / 7 + parseInt(s(455)) / 8 * (parseInt(s(478)) / 9) + parseInt(s(459)) / 10 * (parseInt(s(484)) / 11) + parseInt(s(485)) / 12 * (-parseInt(s(489)) / 13) === 560177)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class ze {
  static addEventListener(t, e, n) {
    const r = ns;
    let i = t.attachEvent || t.addEventListener;
    ve.isFirefox() && e == "mousewheel" ? e = "DOMMouseScroll" : window.attachEvent && e[r(468)](0, 2) !== "on" && (e = "on" + e), i.call(t, e, n);
  }
  static [Ee(482)](t, e) {
    const n = Ee;
    if (typeof t == "string") {
      let r = document[n(462)]("video");
      r.muted = n(465), r.style.display = n(472);
      let i = document.createElement("source");
      return i[n(475)](n(466), "jtopo"), i.type = "video/mp4", i.src = t, r.appendChild(i), document.body.appendChild(r), r.oncanplay = function() {
        e(r);
      }, r;
    }
    return t;
  }
  static [Ee(460)](t) {
    const e = Ee;
    let n = "position,width,height,left,top,bottom,right,zIndex".split(",");
    if (t.fullScreen == 1) {
      let r = t._backup;
      n.forEach((i) => {
        t[ns(464)][i] = r[i];
      }), t.fullScreen = !1;
    } else {
      let r = {};
      n[e(473)]((i) => {
        r[i] = t.style[i];
      }), t[e(474)] = r, t.style.position = "fixed", t[e(464)][e(476)] = 0, t.style.top = 0, t.style.bottom = 0, t.style.right = 0, t.style.zIndex = Fs.FullWindowDom, t.fullScreen = !0;
    }
  }
  static fullScreen(t) {
    const e = Ee;
    t.requestFullscreen ? t.requestFullscreen() : t.mozRequestFullScreen ? t.mozRequestFullScreen() : t.webkitRequestFullscreen ? t.webkitRequestFullscreen() : t.msRequestFullscreen && t[e(457)]();
  }
}
function go() {
  const s = ["muted", "_source", "22840rxlEuC", "substring", "1240tboQrN", "6432IZXFLs", "ontouchstart", "none", "forEach", "_backup", "setAttribute", "left", "clientTop", "144RKVujz", "244428YccMuU", "touches", "body", "createVideo", "top", "5805503yLIaVY", "119508zTjXok", "24hxtEsO", "isMobileDevice", "scrollTop", "1703EnfNiA", "187985qUDwVc", "270328smhCcO", "pageX", "msRequestFullscreen", "maxTouchPoints", "10ROdfLm", "fullWindow", "6fZaFSz", "createElement", "pageXOffset", "style"];
  return (go = function() {
    return s;
  })();
}
function yo() {
  const s = ["130eCXYXs", "preventDefault", "_TouchDragHandler", "touchStartHandler", "18498821yhAUCt", "clientX", "getDistance", "lastTouchDistance", "180pVGqYc", "touches", "98AoWQMr", "860224hhxFoB", "3518758gbUqqr", "326429LzSSsz", "lastTouchCenter", "clientY", "length", "3dnXCBR", "66855nSwpvS", "5994120jqWCVP", "touchendHandler", "280539ehlCKU", "touchsCount"];
  return (yo = function() {
    return s;
  })();
}
ze[Ee(487)] = Ee(471) in window || navigator[Ee(458)] > 0;
const vr = Ce;
function Ce(s, t) {
  const e = yo();
  return (Ce = function(n, r) {
    return e[n -= 319];
  })(s, t);
}
(function() {
  const s = Ce, t = yo();
  for (; ; )
    try {
      if (parseInt(s(341)) / 1 + parseInt(s(340)) / 2 * (-parseInt(s(322)) / 3) + parseInt(s(336)) / 4 * (parseInt(s(323)) / 5) + -parseInt(s(324)) / 6 + -parseInt(s(338)) / 7 * (-parseInt(s(339)) / 8) + -parseInt(s(326)) / 9 * (parseInt(s(328)) / 10) + parseInt(s(332)) / 11 === 951605)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class wl {
  constructor() {
    const t = Ce;
    this.zomThreshold = 10, this[t(327)] = 0, this.lastTouchDistance = null, this.lastTouchCenter = null;
  }
  onTouch(t, e) {
    const n = Ce;
    this[n(327)] = t[n(337)].length, t.type == "touchmove" ? this.touchmoveHandler(t, e) : t.type == "touchstart" ? this[n(331)](t) : t.type == "touchend" && this[n(325)](t);
  }
  touchStartHandler(t) {
    const e = Ce;
    t.touches[e(321)] === 2 && (this[e(335)] = this[e(334)](t[e(337)]), this.lastTouchCenter = this.getCenter(t.touches));
  }
  touchmoveHandler(t, e) {
    const n = Ce;
    if (t[n(329)](), t.touches[n(321)] !== 2 || this[n(335)] == null || this.lastTouchCenter == null)
      return;
    const r = this.getDistance(t[n(337)]), i = this.getCenter(t.touches);
    if (Math.abs(r - this.lastTouchDistance) >= this.zomThreshold) {
      const o = r / this.lastTouchDistance;
      this._TouchZoomHandler && this._TouchZoomHandler(t, o, e);
    } else {
      let o = i.x - this[n(319)].x, a = i.y - this.lastTouchCenter.y;
      this[n(330)] && this._TouchDragHandler(o, a);
    }
    this.lastTouchDistance = r, this.lastTouchCenter = i;
  }
  touchendHandler(t) {
    const e = Ce;
    t.touches.length <= 2 && (this[e(335)] = null, this.lastTouchCenter = null);
  }
  [vr(334)](t) {
    const e = vr;
    return Math.hypot(t[1].clientX - t[0].clientX, t[1].clientY - t[0][e(320)]);
  }
  getCenter(t) {
    const e = vr;
    return { x: 0.5 * (t[0].clientX + t[1][e(333)]), y: 0.5 * (t[0].clientY + t[1][e(320)]) };
  }
}
const it = mo;
function mo(s, t) {
  const e = Io();
  return (mo = function(n, r) {
    return e[n -= 489];
  })(s, t);
}
function Io() {
  const s = ["pointerenter", "type", "81gLbnuC", "offsetY", "_clearTarget", "isIdle", "1244797yUSJPE", "isDraging", "domElement", "dblclick", "pointerup", "timeStamp", "previous", "target", "6XsCZtu", "isPointerDown", "isDragEnd", "88496oIzMCV", "offsetX", "preTarget", "button", "18259120rXRBgv", "buttons", "_setTarget", "_idleTimer", "dispatchEvent", "isDragStart", "hasListener", "defineProperty", "1065990YxKvng", "touchend", "215FfEoHs", "11729488IILgVO", "pointerdown", "dyInWorld", "isRightButton", "yInWorld", "pointerDownY", "title", "preventDefault", "pointerout", "4977RdfbjD", "pointerDownX", "4360181enwtPF", "pointermove", "event", "_updatePointerInfo", "1082YRSovs", "wheel", "click", "eventObservable"];
  return (Io = function() {
    return s;
  })();
}
(function() {
  const s = mo, t = Io();
  for (; ; )
    try {
      if (parseInt(s(501)) / 1 + -parseInt(s(491)) / 2 * (parseInt(s(536)) / 3) + -parseInt(s(512)) / 4 * (parseInt(s(526)) / 5) + parseInt(s(509)) / 6 * (parseInt(s(538)) / 7) + parseInt(s(527)) / 8 + -parseInt(s(497)) / 9 * (-parseInt(s(524)) / 10) + -parseInt(s(516)) / 11 === 784486)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const vl = typeof TouchEvent < "u", _l = [it(528), it(505), it(539), "pointerenter", "pointerout", "wheel", it(493), it(504), "dragstart", "dragend", "dragover", "drop", "touchstart", "touchmove", it(525)];
class xh extends _e {
  constructor(t) {
    const e = it;
    super(), this.skipPointerMovePicking = !1, this._touchWheel = new wl(), this[e(494)] = new Ne(), this.domElement = t, this.reset(), this.initEvents();
  }
  initEvents() {
    let t = this.domElement;
    const e = this;
    _l.map(function(n) {
      ze.addEventListener(t, n, function(r) {
        e._onEvent(r);
      });
    });
  }
  _onEvent(t) {
    const e = it, n = this, r = t.type;
    if (!(t instanceof PointerEvent && r !== e(493)) || t.isPrimary)
      if (vl && t instanceof TouchEvent)
        this._touchWheel.onTouch(t, this.domElement);
      else {
        if (this[e(503)][e(533)] = "", n._updatePointerInfo(t, r), t.type == "wheel")
          return t[e(534)](), n.dispatchEvent(t), void n.eventObservable.publish(t);
        t.defaultPrevented || (n.eventObservable.publish(t), n[e(520)](t));
      }
  }
  updateBaseInfo(t, e) {
    const n = it, r = this[n(507)];
    r.type = this[n(496)], r.x = this.x, r.y = this.y, r.isDraging = this[n(502)], r.isPointDown = this.isPointerDown, r.isPointerOn = this.isPointerOn, r[n(521)] = this.isDragStart, r[n(511)] = this[n(511)], r[n(506)] = this[n(506)], r.dx = this.dx, r.dy = this.dy, r.xInWorld = this.xInWorld, r[n(531)] = this.yInWorld, r.dxInWorld = this.dxInWorld, r.dyInWorld = this.dyInWorld, this.event = t, this.timeStamp = t.timeStamp, this[n(496)] = e, this.isDragEnd = !1, this.isIdle = !1;
    let i = this;
    this._idleTimer != null && window.clearTimeout(this._idleTimer), this[n(519)] = setTimeout(function() {
      i[n(500)] = !0;
    }, this.idleTimeout);
  }
  [it(490)](t, e) {
    const n = it;
    this.updateBaseInfo(t, e), this.isPointerOn = e !== n(535) && t.offsetX > 0 && t.offsetY > 0;
    const r = this.previous;
    this.x = t.offsetX, this.y = t[n(498)], e == n(528) ? (this.isPointerDown = !0, this[n(537)] = this.x, this.pointerDownY = this.y, this[n(517)] = t[n(517)], this[n(515)] = t.button, this[n(530)] = t.button == 2) : (e == n(505) || e == "pointerout") && (this.isPointerDown = !1, r.type == "pointermove" && (this.isDragEnd = !0)), this[n(502)] = this.isPointerDown == 1 && (e == "pointermove" || e == n(492) || e == n(495) || e == n(535)), this[n(521)] = this.isDraging && r.isDraging != 1, this.dx = this.x - r.x, this.dy = this.y - r.y, this._worldPosConverter && this._worldPosConverter();
  }
  [it(518)](t) {
    const e = it;
    this.preTarget = this[e(508)], this[e(508)] = t;
  }
  [it(499)]() {
    this.target = null;
  }
  _mouseEventForwardToCanvas(t) {
    let e = this.event;
    e instanceof PointerEvent && t.dispatchEvent(function(n, r, i) {
      const o = it, a = new MouseEvent(n.type, { view: n.view, bubbles: !0, cancelable: n.cancelable, clientX: n.clientX, clientY: n.clientY });
      return r == null && (r = n.offsetX), i == null && (i = n.offsetY), Object.defineProperty(a, o(513), { get: function() {
        return r;
      } }), Object[o(523)](a, "offsetY", { get: function() {
        return i;
      } }), a;
    }(e));
  }
  preventDefault() {
    this[it(489)] && this.event.preventDefault();
  }
  addEventListener(t, e) {
    return super.addEventListener(t, e);
  }
  [it(522)](t) {
    return super.hasListener(t);
  }
  reset() {
    const t = it;
    this.idleTimeout = 50, this.target = null, this[t(514)] = null, this.mouseoverTarget = null, this.preMouseoverTarget = null, this.dropTarget = null, this.buttons = 0, this.button = 0, this.pointerDownX = 0, this[t(532)] = 0, this.x = -1, this.y = -1, this.dx = 0, this.dy = 0, this.xInWorld = 0, this.yInWorld = 0, this.dxInWorld = 0, this[t(529)] = 0, this.button = 0, this.event = null, this.previous = { type: "pointerenter", x: 0, y: 0, dx: 0, dy: 0, xInWorld: 0, yInWorld: 0, dxInWorld: 0, dyInWorld: 0, isDraging: !1, isPointDown: !1, isPointerOn: !1, isDragStart: !1, isDragEnd: !1, timeStamp: 0 }, this[t(510)] = !1, this.isRightButton = !1, this.isDragEnd = !1, this.isDraging = !1, this.isPointerOn = !1, this.isDragStart = !1, this.isIdle = !0, this[t(506)] = 0, clearTimeout(this._idleTimer), this[t(519)] = null;
  }
}
function xo() {
  const s = ["preventDefault", "6318exQxLr", "call", "4253646vVoNer", "5826975aOSvCY", "2467355tLlAJY", "173PJnxNK", "240680bTnXwB", "2071424VZPYIG", "38064vqoIfF"];
  return (xo = function() {
    return s;
  })();
}
let jn;
function Xr(s) {
  let t = new KeyboardEvent(s.type, s), e = t.preventDefault;
  if (t.preventDefault = function() {
    s.preventDefault(), e.call(this);
  }, t.previous = jn, jn) {
    const n = s.key == jn.key;
    let r = t.time - jn.time;
    n && r < 400 && (t.isDouble = !0);
  }
  return jn = t, t;
}
function bo(s, t) {
  const e = xo();
  return (bo = function(n, r) {
    return e[n -= 334];
  })(s, t);
}
function Sl(s, t) {
  const e = bo;
  let n = {};
  t instanceof WheelEvent ? n = new WheelEvent(s, t) : window.DragEvent && t instanceof window.DragEvent ? n = new DragEvent(s, t) : t instanceof MouseEvent ? n = new MouseEvent(s, t) : t instanceof TouchEvent && (n = new TouchEvent(s, t));
  let r = n.preventDefault;
  return n[e(337)] = function() {
    const i = e;
    t[i(337)](), r[i(339)](this);
  }, n.raw = t, n;
}
(function() {
  const s = bo, t = xo();
  for (; ; )
    try {
      if (-parseInt(s(343)) / 1 * (-parseInt(s(338)) / 2) + -parseInt(s(336)) / 3 + parseInt(s(334)) / 4 + parseInt(s(342)) / 5 + parseInt(s(340)) / 6 + -parseInt(s(341)) / 7 + -parseInt(s(335)) / 8 === 705048)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
let kl = class {
  constructor(s) {
    this.type = s;
  }
};
const ot = nr;
function nr(s, t) {
  const e = wo();
  return (nr = function(n, r) {
    return e[n -= 363];
  })(s, t);
}
function wo() {
  const s = ["push", "delete", "activeElement", "25400yequXp", "debug", "isAltDown", "6dSLAxY", "keyMap", "1928jIVzGS", "get", "9107FqMxyN", "keydownHandler", "set", "hasListener", "2612214wwSBuB", "ctrlKey", "isControlDown", "fireKey", "keyupHandler", "74595lUzYmc", "tagName", "checkValid", "TEXTAREA", "altKey", "disable", "join", "3633795PCklhV", "15091980goaUEV", "isShiftDown", "1960500CSwzUi", "regMap", "4brBQrU", "keydown", "alt", "unbind", "toLowerCase", "addEventListener", "keyupOb", "keys", "key"];
  return (wo = function() {
    return s;
  })();
}
(function() {
  const s = nr, t = wo();
  for (; ; )
    try {
      if (-parseInt(s(365)) / 1 * (-parseInt(s(402)) / 2) + -parseInt(s(373)) / 3 + -parseInt(s(390)) / 4 * (-parseInt(s(378)) / 5) + -parseInt(s(388)) / 6 + parseInt(s(369)) / 7 * (-parseInt(s(367)) / 8) + parseInt(s(385)) / 9 + parseInt(s(386)) / 10 === 493043)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class bh extends _e {
  constructor() {
    const t = nr;
    super(), this[t(363)] = !1, this.disabled = !1, this[t(389)] = /* @__PURE__ */ new Map(), this.keyMap = /* @__PURE__ */ new Map(), this.init(), this.debug = !1;
  }
  [ot(383)]() {
    this.disabled = !0;
  }
  enable() {
    this.disabled = !1;
  }
  [ot(375)]() {
    return this.isKeydown("Control");
  }
  [ot(387)]() {
    return this.isKeydown("Shift");
  }
  [ot(364)]() {
    return this.isKeydown("Alt");
  }
  isMetaDown() {
    return this.isKeydown("Meta");
  }
  bindKey(t, e) {
    const n = ot;
    let r = t[n(394)]().split("+").sort()[n(384)]("+");
    this.regMap[n(371)](r, e);
  }
  isKeyRegistered(t) {
    return this.getKeyBinding(t) != null;
  }
  getKeyBinding(t) {
    const e = ot;
    let n = t.toLowerCase().split("+").sort().join("+");
    return this.regMap[e(368)](n);
  }
  [ot(393)](t) {
    let e = t[ot(394)]().split("+").sort().join("+");
    this.regMap.delete(e);
  }
  isKeydown(t) {
    return this.keyMap.get(t.toLowerCase());
  }
  sendKey(t, e) {
    e == null && ((e = new KeyboardEvent("keydown")).mock = !0), this.fireKey(t.toLowerCase().split("+"), e);
  }
  checkValid() {
    const t = ot;
    let e = document[t(401)][t(379)];
    return !this.disabled && e != "INPUT" && e != t(381);
  }
  [ot(376)](t, e) {
    const n = ot, r = this;
    let i = t.sort().join("+").toLowerCase();
    this.debug && console.log("按下", i);
    let o = this.regMap[n(397)]();
    for (let a of o) {
      if (a != i)
        continue;
      e.preventDefault();
      let h = r.regMap[n(368)](a);
      h && h(e);
    }
  }
  keydownHandler(t) {
    const e = ot;
    let n = t[e(398)].toLowerCase(), r = [];
    t[e(374)] && (this.keyMap[e(371)]("control", !0), r.push("control")), t[e(382)] && (this.keyMap.set(e(392), !0), r.push("alt")), t.shiftKey && (this[e(366)].set("shift", !0), r[e(399)]("shift")), t.metaKey && (this.keyMap.set("meta", !0), r.push("meta")), r.indexOf(n) == -1 && r.push(n), this.keyMap.set(n, !0);
    let i = Xr(t);
    this[e(376)](r, i), this.dispatchEvent(i);
  }
  [ot(377)](t) {
    const e = ot, n = t.key.toLowerCase();
    this.keyMap[e(400)](n);
    let r = Xr(t);
    this.dispatchEvent(r);
  }
  init() {
    const t = ot;
    let e = this, n = Ne.fromEvent(document, t(391)), r = Ne.fromEvent(document, "keyup"), i = n.filter(() => this[t(380)]()), o = r.filter(() => this.checkValid());
    i.subscribe((a) => {
      e[t(370)](a);
    }), o.subscribe((a) => {
      e[t(377)](a);
    }), this.keydownOb = i, this[t(396)] = o;
  }
  addEventListener(t, e) {
    return super[ot(395)](t, e);
  }
  removeEventListener(t, e) {
    return super.removeEventListener(t, e);
  }
  [ot(372)](t) {
    return super.hasListener(t);
  }
}
function js(s, t) {
  var e = vo();
  return (js = function(n, r) {
    return e[n -= 158];
  })(s, t);
}
function vo() {
  var s = ["124934VIMNkQ", "8510165gMRWST", "168LsxYVA", "1575XffZPr", "32750OQlWKX", "rgba(0,255,0, 0.5)", "12px arial", "rgba(255,0,0,0.5)", "567176YkxeIC", "17192elzoop", "bottom", "13VspUWi", "visible", "36403411qdFyYW", "291FUNbai", "3296826bkkDCb", "right"];
  return (vo = function() {
    return s;
  })();
}
(function() {
  for (var s = js, t = vo(); ; )
    try {
      if (-parseInt(s(168)) / 1 * (parseInt(s(174)) / 2) + -parseInt(s(171)) / 3 * (parseInt(s(166)) / 4) + -parseInt(s(158)) / 5 + -parseInt(s(172)) / 6 + -parseInt(s(159)) / 7 * (-parseInt(s(165)) / 8) + parseInt(s(160)) / 9 * (-parseInt(s(161)) / 10) + parseInt(s(170)) / 11 === 957323)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class wh {
  constructor() {
    var t = js;
    this.visible = !1, this.lineDashScale = 1, this.styleX = new Jt({ strokeStyle: t(164), fillStyle: "rgba(255,0,0,0.9)", textAlign: t(173), textBaseline: "top", lineWidth: 1, font: "12px arial" }), this.styleY = new Jt({ strokeStyle: t(162), fillStyle: "rgba(0,255,0, 0.9)", textBaseline: t(167), lineWidth: 1, font: t(163) });
  }
  show() {
    this[js(169)] = !0;
  }
  hide() {
    this.visible = !1;
  }
}
var Ge = _o;
(function() {
  for (var s = _o, t = So(); ; )
    try {
      if (parseInt(s(139)) / 1 * (-parseInt(s(134)) / 2) + -parseInt(s(128)) / 3 * (parseInt(s(123)) / 4) + parseInt(s(129)) / 5 + parseInt(s(124)) / 6 + parseInt(s(130)) / 7 * (-parseInt(s(136)) / 8) + parseInt(s(127)) / 9 + parseInt(s(135)) / 10 * (parseInt(s(125)) / 11) === 888537)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Ll = Object[Ge(137)], Pl = Object.getOwnPropertyDescriptor, Ya = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? Pl(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && Ll(t, e, i), i;
};
function _o(s, t) {
  var e = So();
  return (_o = function(n, r) {
    return e[n -= 123];
  })(s, t);
}
class ss extends C {
  constructor(t, e = 0, n = 0, r = 1, i = 1) {
    super(t, e, n, r, i), this.aeOptions = {}, this.animations = [];
  }
  [Ge(140)]() {
    this.animationSystem && this.animations.forEach((t, e) => {
      t.cancel();
    });
  }
  [Ge(132)]() {
    this[Ge(126)] && this.animations.forEach((t, e) => {
      t.play();
    });
  }
  removeFromParent() {
    var t = Ge;
    return super.removeFromParent(), this.animationSystem && this.animationSystem[t(133)](this), this;
  }
  destroy() {
    super.destroy(), this.aeOptions = null, this.animations = null, this.animationSystem = null;
  }
}
function So() {
  var s = ["removeAENode", "230948GAsnWl", "326440GwBZRe", "16wSslRX", "defineProperty", "concat", "6AeySUb", "pause", "40jRQbdQ", "5465058GGYfnB", "88ptSpZE", "animationSystem", "12160917OYIrEh", "302085wdWspl", "4510085jguRvv", "2929129hDwdAM", "_serializers", "play"];
  return (So = function() {
    return s;
  })();
}
Ya([p("AENode")], ss.prototype, "className", 2), Ya([p(C.prototype[Ge(131)][Ge(138)](["aeOptions"]))], ss.prototype, "_serializers", 2);
const Rt = wn;
function ko() {
  const s = ["' height='", "svgToImage", "2579427fXEkvB", "src", "808910pBDQwh", "'/>", "9868NFaNyT", "batchLoadImagesToBase64", "<path d='", "11006kTqVXD", "ctx", "data", "12lLUjOg", "width", "function", "123277aLihIq", "92640RIamFf", "height", "24YAyIlg", "colorFilter", "file reader error:", "getContext", "2839392WmXixC", "createGridImage", "startsWith", "data:image/", "length", "svgToImageUrl", "canvas", "createDarkGridImg", "data:image/svg+xml;base64,", "M 0 "];
  return (ko = function() {
    return s;
  })();
}
(function() {
  const s = wn, t = ko();
  for (; ; )
    try {
      if (parseInt(s(198)) / 1 + -parseInt(s(193)) / 2 + -parseInt(s(175)) / 3 * (-parseInt(s(195)) / 4) + -parseInt(s(205)) / 5 * (parseInt(s(201)) / 6) + -parseInt(s(204)) / 7 + parseInt(s(179)) / 8 + parseInt(s(191)) / 9 === 213147)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const Ua = document.createElement("canvas"), Yr = class Wt {
  static bgGrid(t, e, n, r, i = "#242424", o = "#151515") {
    const a = wn;
    let h = "<svg width='" + t + a(189) + e + `' xmlns='http://www.w3.org/2000/svg'>
<rect x='0' y='0' width='` + t + "' height='" + e + "' style='fill:" + i + ";stroke:" + o + `;stroke-width:1;'/>
<g style='stroke:` + o + "; stroke-width:0.5;'>", l = e / n, c = t / r, u = "";
    for (let g = 1; g <= n; g++)
      u += a(188) + l * g + " H " + t + " ";
    h += a(197) + u + a(194);
    let f = "";
    for (let g = 1; g <= r; g++)
      f += "M " + c * g + " 0 V " + e + " ";
    return h += "<path d='" + f + "'/>", h += "</g></svg>", h = h.replace(/\n/g, ""), h;
  }
  static [Rt(180)](t, e, n, r, i, o) {
    let a = Wt.bgGrid(t, e, n, r, i, o);
    return 'url("' + Wt.svgToImageUrl(a) + '")';
  }
  static createLightGridImg(t, e) {
    return Wt.createGridImage(100, 100, 4, 4, t, e);
  }
  static [Rt(186)](t, e) {
    return Wt.createGridImage(100, 100, 4, 4, t, e);
  }
  static svgToImageUrl(t) {
    const e = Rt, n = btoa(unescape(encodeURIComponent(t)));
    return e(187) + n;
  }
  static [Rt(190)](t) {
    const e = Rt;
    let n = new Image();
    return n.src = Wt[e(184)](t), n;
  }
  static canvasColorFilter(t, e) {
    const n = Rt, r = t.getContext("2d"), i = r.getImageData(0, 0, t.width, t.height);
    let o = (a, h, l, c) => [e[0] * a / 255, e[1] * h / 255, e[2] * l / 255];
    typeof e == n(203) && (o = e);
    for (let a = 0; a < i[n(200)][n(183)]; a += 4) {
      let h = o(i.data[a], i[n(200)][a + 1], i[n(200)][a + 2], i.data[a + 3]);
      i.data[a] = h[0], i[n(200)][a + 1] = h[1], i[n(200)][a + 2] = h[2], h[n(183)] > 3 && h[3] != null && (i.data[a + 3] = h[3]);
    }
    r.putImageData(i, 0, 0);
  }
  static [Rt(176)](t, e) {
    const n = Rt, r = Wt.canvas, i = Wt.ctx;
    r[n(202)] = t[n(202)], r[n(206)] = t.height, i.drawImage(t, 0, 0), Wt.canvasColorFilter(r, e);
    const o = new Image();
    return o[n(192)] = r.toDataURL("image/png"), o;
  }
  static parseImgUrl(t) {
    if (t.startsWith("data:image/"))
      return t;
    if (t.startsWith("url(")) {
      let e = t.match(/url\((['"]?)(.*?)\1\)/);
      if (e)
        return e[2];
      throw new Error("Image url error: " + t);
    }
    return "";
  }
  static loadAndConvertImage(t) {
    return Wt.loadImageAsBase64(t);
  }
  static loadImageAsBase64(t) {
    return new Promise((e, n) => {
      const r = wn;
      try {
        if (t[r(181)](r(182)))
          return void e(t);
        fetch(t).then((i) => {
          if (!i.ok)
            throw new Error("HTTP error! status: " + i.status + " : " + t);
          return i.blob();
        }).then((i) => {
          const o = new FileReader();
          o.onloadend = function() {
            const a = o.result;
            e(a);
          }, o.onerror = function() {
            n(new Error(wn(177) + t));
          }, o.readAsDataURL(i);
        });
      } catch (i) {
        n(i);
      }
    });
  }
  static batchLoadAndConvertImages(t) {
    return Wt.batchLoadImagesToBase64(t);
  }
  static [Rt(196)](t) {
    const e = t.map((n) => Wt.loadImageAsBase64(n));
    return Promise.all(e);
  }
};
function wn(s, t) {
  const e = ko();
  return (wn = function(n, r) {
    return e[n -= 175];
  })(s, t);
}
Yr[Rt(185)] = Ua, Yr[Rt(199)] = Ua[Rt(178)]("2d", { willReadFrequently: !0 });
let Qn = Yr;
function Lo() {
  var s = ["2949711shsaJB", "2gZqQZm", "631673kUlPlS", "6244752xgPdTG", "3711740cGLOBi", "3741015StaiSe", "stoped", "1404182mgRFWt", "15095824RxgyOo"];
  return (Lo = function() {
    return s;
  })();
}
function Po(s, t) {
  var e = Lo();
  return (Po = function(n, r) {
    return e[n -= 427];
  })(s, t);
}
(function() {
  for (var s = Po, t = Lo(); ; )
    try {
      if (-parseInt(s(433)) / 1 + -parseInt(s(427)) / 2 * (-parseInt(s(435)) / 3) + -parseInt(s(430)) / 4 + -parseInt(s(431)) / 5 + parseInt(s(429)) / 6 + -parseInt(s(428)) / 7 + parseInt(s(434)) / 8 === 740448)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Ol extends _e {
  constructor() {
    var t = Po;
    super(), this[t(432)] = !1;
  }
  dispose() {
  }
}
function Oo() {
  const s = ["1084xymQzB", "style", "373814tZmPtA", "lineTo", "round", "canvas", "NodeSelectedStyle", "length", "width", "getContext", "24079QgUvMd", "paint", "height", "strokeStyle", "display", "none", "_worldTransform", "shadowColor", "save", "quadraticCurveTo", "57728rvTgpd", "5547yqAVIm", "26jkGkPF", "isSelected", "showSelected", "12xpRzBC", "811256YKBbao", "330kbEUkb", "roundRect", "context", "contextExtends", "getStyle", "clear", "assign", "show", "currentTheme", "scale", "4142292yTEJRs", "18IxSQtS", "465jQyXvG", "42IQoFBD", "closePath"];
  return (Oo = function() {
    return s;
  })();
}
const ge = qe;
function qe(s, t) {
  const e = Oo();
  return (qe = function(n, r) {
    return e[n -= 468];
  })(s, t);
}
(function() {
  const s = qe, t = Oo();
  for (; ; )
    try {
      if (parseInt(s(498)) / 1 + parseInt(s(503)) / 2 * (-parseInt(s(499)) / 3) + parseInt(s(478)) / 4 * (-parseInt(s(475)) / 5) + parseInt(s(476)) / 6 * (-parseInt(s(480)) / 7) + -parseInt(s(504)) / 8 * (parseInt(s(474)) / 9) + parseInt(s(505)) / 10 * (parseInt(s(488)) / 11) + parseInt(s(473)) / 12 * (parseInt(s(500)) / 13) === 207422)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class vh extends Ol {
  constructor() {
    const t = qe;
    super(), this.destroyed = !1;
    const e = document.createElement(t(483));
    this.canvas = e, Object[t(469)](e.style, { position: "absolute", touchAction: t(493) }), this.context = e[t(487)]("2d"), window.devicePixelRatio && this.context[t(472)](window.devicePixelRatio, window.devicePixelRatio), this.contextExtends();
  }
  _paintFlattenObjects(t, e) {
    const n = qe;
    let r = this[n(507)];
    for (let i = 0; i < t[n(485)]; i++) {
      let o = t[i];
      if (r[n(496)](), o instanceof C) {
        let a = o[n(494)].m;
        r.transform(a[0], a[1], a[2], a[3], a[4], a[5]);
      } else if (!(o.parent instanceof ut)) {
        let a = o.parent._worldTransform.m;
        r.transform(a[0], a[1], a[2], a[3], a[4], a[5]);
      }
      this[n(489)](o, e), r.restore();
    }
  }
  paint(t, e) {
    const n = qe;
    let r = this.context, i = t[n(501)] && t[n(502)] == 1 && e !== null;
    i && (r[n(496)](), this.paintSelected(t, e)), t.draw(r), i && r.restore();
  }
  paintSelected(t, e) {
    const n = qe;
    let r = this.context;
    if (t instanceof C) {
      let i = t.selectedStyle || e[n(471)][n(509)](n(484));
      if (i.borderWidth > 0) {
        r.save(), r.beginPath();
        let o = i.borderWidth;
        i.lineDash != null && r.setLineDash(i.lineDash), i.borderColor != null && (r[n(491)] = i.borderColor), r.lineWidth = o;
        let a = t[n(486)] + 2 * o, h = t[n(490)] + 2 * o;
        r.rect(0.5 * -a, 0.5 * -h, a, h), r.stroke(), r.closePath(), r.restore();
      } else
        Object.assign(r, i);
    } else {
      let i = e[n(471)].getStyle("LinkSelectedStyle");
      i[n(495)] != null && Object.assign(r, i);
    }
  }
  clearAll() {
    this.clear();
  }
  [ge(508)]() {
    const t = ge;
    this.context[t(506)] == null && (this.context[t(506)] = function(e, n, r, i, o) {
      const a = t;
      this.beginPath(), this.moveTo(e + o, n), this[a(481)](e + r - o, n), this[a(497)](e + r, n, e + r, n + o), this.lineTo(e + r, n + i - o), this.quadraticCurveTo(e + r, n + i, e + r - o, n + i), this.lineTo(e + o, n + i), this.quadraticCurveTo(e, n + i, e, n + i - o), this.lineTo(e, n + o), this.quadraticCurveTo(e, n, e + o, n), this[a(477)]();
    });
  }
  [ge(470)]() {
    const t = ge;
    this.canvas.style[t(492)] = "block";
  }
  hide() {
    this.canvas.style.display = "none";
  }
  getWidth() {
    return this[ge(483)].width;
  }
  getHeight() {
    return this.canvas.height;
  }
  setSize(t, e) {
    const n = ge, r = window.devicePixelRatio || 1;
    this.canvas.width = Math[n(482)](t * r), this[n(483)].height = Math[n(482)](e * r), this.canvas[n(479)].width = t + "px", this.canvas.style.height = e + "px";
  }
  getCursor() {
    const t = ge;
    return this[t(483)][t(479)].cursor;
  }
  setCursor(t) {
    this.canvas.style.cursor = t;
  }
  toDataURL(t, e) {
    return t = t || "image/png", this.canvas.toDataURL(t, e);
  }
  [ge(468)]() {
    this.canvas.width = this.canvas.width;
  }
  dispose() {
    const t = ge;
    this.destroyed = !0, this[t(483)].remove();
  }
}
const Ja = vn;
function vn(s, t) {
  const e = To();
  return (vn = function(n, r) {
    return e[n -= 129];
  })(s, t);
}
(function() {
  const s = vn, t = To();
  for (; ; )
    try {
      if (parseInt(s(148)) / 1 + parseInt(s(129)) / 2 + parseInt(s(161)) / 3 + parseInt(s(150)) / 4 * (parseInt(s(133)) / 5) + parseInt(s(160)) / 6 * (-parseInt(s(157)) / 7) + -parseInt(s(134)) / 8 + parseInt(s(156)) / 9 * (parseInt(s(145)) / 10) === 955848)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Tl = ve.gc;
function To() {
  const s = ["visible", "lineTo", "displayList", "transform", "strokeStyle", "paintAxis", "130WFHKlF", "bold 16px arial", "toScreenXY", "604787zIpLoj", "restore", "2012weCzAy", "width", "length", "forEach", "devicePixelRatio", "applyTo", "876195HRqLhP", "65576RacFPM", "beginPath", "context", "1068vrAnqD", "3965613TCgAyb", "86718EsQwhN", "save", "currentTheme", "stage", "8885DroKRI", "12048888nvvFUU", "camera", "getHeight", "height", "_axis"];
  return (To = function() {
    return s;
  })();
}
let Va = dt.w;
class _h extends vh {
  constructor() {
    super();
  }
  renderLayer(t) {
    const e = vn, n = t.stage.styleSystem;
    if (this.clear(), window.devicePixelRatio && window.devicePixelRatio != 1) {
      const i = window[e(154)];
      this.context.scale(i, i);
    }
    const r = n[e(131)].getStyle("DefaultConfig");
    Object.assign(this.context, r), t[e(138)][e(139)] && this.paintAxis(t), this.paintLayer(t, t[e(132)].camera), Kn.paintAABB == 1 && t.displayList != null && this.paintAABB(t);
    {
      if (Va == null)
        return;
      let i = this[e(159)];
      i.save(), i.globalAlpha = 0.8, i.font = e(146);
      let o = Tl(Va);
      i.fillStyle = "gray", i.fillText(o, 14, this[e(136)]() - 14), i[e(149)]();
    }
  }
  paintLayer(t, e) {
    const n = vn;
    let r = this[n(159)];
    r[n(130)]();
    let i = e.getTransform().m;
    return r[n(142)](i[0], i[1], i[2], i[3], i[4], i[5]), t._computedStyle[n(155)](r), t.displayList[n(153)]((o) => o.painted = !0), this._paintFlattenObjects(t[n(141)], t.stage.styleSystem), r.restore(), t;
  }
  paintAABB(t) {
    const e = vn;
    let n = t[e(132)].camera, r = this[e(159)], i = t.displayList;
    for (let o = i[e(152)] - 1; o >= 0; o--) {
      let a = i[o], h = a._getAABBWithText();
      h = n.toScreenRect(h), r.save(), a instanceof ut ? r.strokeStyle = "rgba(0,0,255,0.3)" : a instanceof j ? r[e(143)] = "pink" : r.strokeStyle = "green", r.beginPath(), r.rect(h.x, h.y, h.width, h[e(137)]), r.stroke(), r.closePath(), r[e(149)]();
    }
  }
  [Ja(144)](t) {
    const e = Ja, n = t._axis, r = t.stage;
    let i = this.context;
    const o = r.camera.localView.object || t, a = r[e(151)], h = r.height, l = o.localToWorldXY(0, 0), c = r[e(135)][e(147)](l.x, l.y);
    i[e(130)](), c.x > 0 && c.x < a && (i[e(158)](), n.styleY[e(155)](i), i.moveTo(c.x, 0), i.lineTo(c.x, h), i.moveTo(c.x - 5, h - 8), i.lineTo(c.x, h), i[e(140)](c.x + 5, h - 8), i.stroke(), i.fillText("+y", c.x + 6, h - 5)), c.y > 0 && c.y < h && (i[e(158)](), n.styleX.applyTo(i), i.moveTo(0.5 * a, c.y), i.lineTo(0, c.y), i.moveTo(0.5 * a, c.y), i.lineTo(a, c.y), i.moveTo(a - 8, c.y - 5), i.lineTo(a, c.y), i.lineTo(a - 8, c.y + 5), i.stroke(), i.fillText("+x", a - 5, c.y + 5)), i.restore();
  }
}
const T = us;
function Eo() {
  const s = ["addAENode", "472440xVEPxx", "pointerEnabled", "assign", "_visible", "pickable", "containsRect", "_treeDirty", "_checkAndGetFlattenList", "getAABB", "94492QKnOwc", "visible", "length", "_attrDirty", "_displayListDirty", "destroy", "render", "canvas", "_getAABBWithText", "15591048IgVkpY", "setSize", "_requestReapint", "2406ctfWea", "unionRects", "filter", "isNode", "dispose", "_backgroundImageObject", "update", "cuttingHide", " repeat", "_flattenList", "522729xudOWH", "6488454OSbXCA", "destroyed", "forEach", "xInWorld", "addChildren", "backgroundImage", "canSee", "_markAllRelativeLinksDirty", "_matrixDirty", "12465BVdwGO", "camera", "_calcBackgroundPosition", "keys", "hitTest", "stage", "querySelectorAll", "parseImgUrl", "setStyles", "displayList", "getRect", "px ", "_findChildren", "set", "loopRender", "renderSystem", "styleIndexMap", "updateZIndex", "parent", "1464356Xlkxez", "map", "setZIndex", "classList", "background", "rgb(20,20,20)", "_pickUp", "styles", "height", "rgb(36,36,36)", "frames", "push", "setBackground", "style", "animationSystem", "querySelector"];
  return (Eo = function() {
    return s;
  })();
}
(function() {
  const s = us, t = Eo();
  for (; ; )
    try {
      if (-parseInt(s(517)) / 1 + -parseInt(s(500)) / 2 + -parseInt(s(548)) / 3 + -parseInt(s(526)) / 4 + parseInt(s(558)) / 5 * (parseInt(s(538)) / 6) + -parseInt(s(549)) / 7 + parseInt(s(535)) / 8 === 619168)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var El = Object.defineProperty, Cl = Object.getOwnPropertyDescriptor, an = (s, t, e, n) => {
  const r = us;
  for (var i, o = n > 1 ? void 0 : n ? Cl(t, e) : t, a = s[r(528)] - 1; a >= 0; a--)
    (i = s[a]) && (o = (n ? i(t, e, o) : i(o)) || o);
  return n && o && El(t, e, o), o;
};
function us(s, t) {
  const e = Eo();
  return (us = function(n, r) {
    return e[n -= 490];
  })(s, t);
}
const Xe = class Xn extends lt {
  constructor(t) {
    const e = us;
    super(), this._renderTimes = 0, this[e(545)] = !0, this.displayList = [], this[e(547)] = [], this._axis = new wh(), this._frames = 0, this[e(537)] = !1, this._bgInfo = { sw: 1, sh: 1, x: 0, y: 0 }, this._displayListDirty = !0, this._treeDirty = !0, this._needUpdateDisplayList = !0, this.ownerLayer = this, this.displayList = [];
    let n = new _h();
    this._setRender(n), t instanceof ar ? t.addLayer(this) : typeof t == "string" && (this.name = t);
  }
  set [T(504)](t) {
    this[T(512)](t);
  }
  get background() {
    return this._background;
  }
  get frames() {
    return this._frames;
  }
  set [T(510)](t) {
    this._frames = t;
  }
  [T(491)]() {
    return new O(0, 0, this.width, this.height);
  }
  resize(t, e) {
    const n = T;
    this[n(532)][n(536)](t, e);
  }
  _onMound(t) {
    this[T(563)] = t, this._markAllDirty();
  }
  update() {
    this._requestReapint = !0;
  }
  useLightGridBackground() {
    const t = T;
    this.setBackground({ background: Qn.createLightGridImg("rgb(255,255,255)", "rgb(240,240,240)") + t(546) });
  }
  useDarkGridBackground() {
    const t = T;
    this[t(512)]({ background: Qn.createDarkGridImg(t(509), t(505)) + " repeat" });
  }
  _setRender(t) {
    const e = T;
    this[e(532)] != null && this.render[e(542)](), this.render = t, this.canvas = t.canvas, this.update(), setTimeout(() => {
      this[e(533)].id = "layer_" + this.name;
    }, 100);
  }
  _updateRenderSize(t, e) {
    const n = T;
    (t != this[n(532)].getWidth() || e != this[n(532)].getHeight()) && (this.render.setSize(t, e), this.resize(t, e), this[n(544)]());
  }
  _pickUpByRect(t) {
    const e = T;
    let n = [];
    if (!this[e(518)])
      return n;
    let r = this[e(490)];
    if (r != null)
      for (let i = 0; i < r[e(528)]; i++) {
        let o = r[i], a = o._obb.aabb;
        o[e(521)]() && t[e(522)](a) && n[e(511)](o);
      }
    return n;
  }
  [T(506)](t, e) {
    const n = T;
    if (!this.pointerEnabled)
      return null;
    t == null && (t = this.stage.inputSystem[n(552)]), e == null && (e = this.stage.inputSystem.yInWorld);
    for (let r = this.displayList.length - 1; r >= 0; r--) {
      let i = this.displayList[r];
      if (i[n(521)]() && i[n(562)](t, e)) {
        let o = ps._getTopFrozenParent(i);
        return o ?? i;
      }
    }
    return null;
  }
  [T(560)](t = !1) {
    const e = T;
    if (this.stage == null)
      return;
    const n = this[e(532)][e(533)];
    let r = n[e(513)].backgroundRepeat, i = this[e(543)];
    if (i != null && r == "repeat") {
      let o = this._bgInfo, a = i.width, h = i.height, l = this[e(563)].camera, c = a * l.scale, u = h * l.scale, f = l.getOffsetInScreen(), g = 0.5 * n.width + f.x, y = 0.5 * n[e(508)] + f.y;
      (t || o.sw != c || o.sh != u || o.x != g || o.y != y) && (n.style.backgroundSize = c + e(492) + u + "px", n[e(513)].backgroundPosition = g + "px " + y + "px"), o.sw = c, o.sh = u, o.x = g, o.y = y;
    }
  }
  [T(525)]() {
    const t = T;
    let e = this[t(563)][t(559)], n = this._flattenList[t(540)]((i) => i.visible && e.canSee(i));
    if (n[t(528)] == 0)
      return new O(0, 0, 1, 1);
    let r = n[t(501)]((i) => i._obb.aabb);
    return O.unionRects(r);
  }
  _getExportAABB() {
    const t = T;
    let e = this.stage.camera, n = this._flattenList[t(540)]((i) => i.visible && e[t(555)](i));
    if (n[t(528)] == 0)
      return new O(0, 0, 1, 1);
    let r = n.map((i) => i[t(534)]());
    return O[t(539)](r);
  }
  [T(502)](t) {
    const e = T;
    this._zIndex = t, this.stage && this[e(563)][e(498)]();
  }
  get visible() {
    return this[T(520)];
  }
  set [T(527)](t) {
    const e = T;
    this._visible = t, this._matrixDirty = !0, this.render && (t == 1 ? this[e(532)].show() : this.render.hide());
  }
  draw(t) {
  }
  _forceUpdate() {
    const t = T;
    this.visible == 0 || this.destroyed || this.render.stoped || this[t(532)].destroyed == 1 || this.stage[t(496)]._tickLayer(this, Date.now());
  }
  _markAllDirty() {
    this._treeDirty = !0, this.querySelectorAll().forEach((t) => {
      t.style.dirty = !0, t._matrixDirty = !0;
    });
  }
  [T(566)](t) {
    return this.setBackground(t);
  }
  setBackground(t) {
    const e = T;
    this._background = t;
    const n = this[e(533)].style;
    Object[e(519)](n, t);
    const r = this;
    dt.cancelLoadByObject(this);
    let i = n[e(554)];
    if (i && i[e(528)] > 0 && i !== "initial") {
      let o = Qn[e(565)](i);
      o != "" && dt.loadImageWithObj(this, o, function(a) {
        const h = e;
        r._backgroundImageObject = a, r[h(560)](!0);
      });
    }
    return this._calcBackgroundPosition(!0), this;
  }
  addChild(t) {
    return super.addChild(t), this.update(), this;
  }
  [T(553)](t) {
    const e = T;
    return super[e(553)](t), this[e(544)](), this;
  }
  getAllNodes() {
    const t = T;
    return this._findChildren((e) => e[t(541)], !0);
  }
  getAllLinks() {
    return this[T(493)]((t) => t.isLink, !0);
  }
  [T(564)](t) {
    return super.querySelectorAll(t);
  }
  [T(515)](t) {
    return super.querySelector(t);
  }
  [T(495)](t = 60) {
    this._frames = t;
  }
  endLoopRender() {
    this._frames = 0;
  }
  _prepareRenderData() {
    const t = T;
    if (this._needUpdateDisplayList = this._treeDirty || this.stage.camera.isDirty() || this._displayListDirty, this[t(523)])
      return this._flattenList = this[t(524)](this.children, []), void (this[t(523)] = !1);
    for (let e = 0; e < this._flattenList[t(528)]; e++) {
      let n = this._flattenList[e];
      n.parent._matrixDirty && (n._matrixDirty = !0), (n._matrixDirty || n.style.dirty == 1) && (this[t(530)] = !0, Xn[t(556)](this, n, !0)), n._state._attrDirty && (this._requestReapint = !0, n._state[t(529)] = !1), n instanceof ss && n.animationSystem == null && this.stage && this.stage[t(514)][t(516)](n);
    }
  }
  [T(524)](t, e) {
    const n = T, r = this;
    for (let i = 0; i < t.length; i++) {
      let o = t[i];
      e.push(o), o[n(499)][n(557)] && (o._matrixDirty = !0), (o._matrixDirty || o[n(513)].dirty == 1) && (this._displayListDirty = !0, Xn[n(556)](r, o, !0)), o._state._attrDirty && (this[n(537)] = !0, o._state._attrDirty = !1), o instanceof ss && o.animationSystem == null && this.stage && this.stage.animationSystem.addAENode(o), o.children.length > 0 && this._checkAndGetFlattenList(o.children, e);
    }
    return e;
  }
  static _markAllRelativeLinksDirty(t, e, n = !0) {
    const r = T;
    let i = e.inLinks;
    for (let a = 0; a < i.length; a++) {
      let h = i[a];
      !h[r(557)] && (h[r(557)] = !0, n && Xn._markAllRelativeLinksDirty(t, h));
    }
    let o = e.outLinks;
    for (let a = 0; a < o.length; a++) {
      let h = o[a];
      !h._matrixDirty && (h._matrixDirty = !0, n && Xn._markAllRelativeLinksDirty(t, h));
    }
  }
  translateWith(t, e) {
    return this;
  }
  _getSegmentPoints() {
    return [];
  }
  changeParent(t) {
    return this;
  }
  _doTransform(t) {
  }
  _getOBBPoints() {
    return [];
  }
  _beforeToJSON(t) {
    const e = T;
    let n = this.style;
    if (t[e(497)].get(n) == null) {
      let r = n.toJSON(t.indexImage);
      if (Object[e(561)](r).length > 0) {
        let i = t.styles.length;
        t.styleIndexMap[e(494)](n, i), t[e(507)][e(511)](r);
      }
    }
  }
  [T(531)]() {
    const t = T;
    if (this[t(550)])
      throw new Error("Layer has been destroyed already.");
    this.destroyed = !0, this.stage && this.stage.removeLayer(this), this.render[t(542)](), this.displayList = void 0, this._flattenList = void 0, this.listeners = void 0, this[t(513)] = void 0, this[t(503)].length = 0, this.render = void 0, this.stage = void 0, this.children[t(551)]((e) => e.removeFromParent()), this.children.length = 0;
  }
};
an([p("Layer")], Xe.prototype, "className", 2), an([p(!0)], Xe.prototype, "isLayer", 2), an([p(K.MinDeep - 1)], Xe.prototype, "deep", 2), an([p(["className", "isLayer"])], Xe.prototype, "_allwaysSerializers", 2), an([p(["id", "name", "background", "zIndex", T(527), T(518)])], Xe.prototype, "_serializers", 2), an([p("undefined")], Xe.prototype, "_layerIndex", 2);
let ut = Xe;
const Et = Ke;
function Ke(s, t) {
  const e = Co();
  return (Ke = function(n, r) {
    return e[n -= 247];
  })(s, t);
}
(function() {
  const s = Ke, t = Co();
  for (; ; )
    try {
      if (parseInt(s(263)) / 1 * (parseInt(s(252)) / 2) + -parseInt(s(250)) / 3 + -parseInt(s(270)) / 4 * (-parseInt(s(266)) / 5) + parseInt(s(268)) / 6 * (-parseInt(s(282)) / 7) + parseInt(s(251)) / 8 + -parseInt(s(259)) / 9 + parseInt(s(253)) / 10 === 792522)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class ps {
  static _getTopFrozenParent(t) {
    let e = ps._getAncestors(t);
    for (let n = 0; n < e.length; n++)
      if (e[n].frozen)
        return e[n];
    return null;
  }
  static _getAncestors(t) {
    const e = Ke;
    if (t.parent == null)
      return [];
    let n = [];
    for (; t.parent != null; )
      n.push(t[e(261)]), t = t.parent;
    return n[e(273)]();
  }
  static anchorToLocalPoint(t, e) {
    const n = Ke;
    let r = t._shape[n(267)](e);
    if (r == null)
      throw Error("anchor not exist:" + e);
    return N[n(254)](t, r);
  }
  static getNearestPoint(t, e) {
    const n = Ke;
    if (t instanceof C) {
      if (t[n(265)].hasBorder)
        return Ut[n(257)](e.x, e.y, t[n(276)].points, t._shape.isClosed);
      if (t._obb.points == null && t._matrixDirty)
        throw new Error("未来得及更新矩阵");
    }
    return t._shape[n(248)](e.x, e.y, t);
  }
  static [Et(262)](t, e) {
    const n = Et;
    if (t instanceof j)
      return void t.unlink();
    let r = t.inLinks;
    r != null && (r.forEach((o) => {
      const a = Ke;
      o.parent != null && (e != null && e[a(258)](o) != -1 || o.setEnd(o.getEndPoint()));
    }), t[n(279)].length = 0);
    let i = t.outLinks;
    i != null && (i[n(272)]((o) => {
      o.parent != null && (e != null && e.indexOf(o) != -1 || o.setBegin(o.getBeginPoint()));
    }), t.outLinks.length = 0);
  }
  static raise(t) {
    const e = Et;
    let n;
    t instanceof ut ? t.stage && (n = t.stage.viewLayers) : n = t[e(261)].children;
    let r = At[e(269)](t, n);
    return r && (t[e(271)] && (t.ownerLayer._treeDirty = !0), t instanceof ut && t.stage && t.stage.updateZIndex()), r;
  }
  static lower(t) {
    const e = Et;
    let n;
    t instanceof ut ? n = t.stage[e(256)] : t.parent && (n = t.parent.children);
    let r = At.swapWithLeft(t, n);
    return r && (t.ownerLayer && (t.ownerLayer._treeDirty = !0), t instanceof ut && t.stage && t.stage.updateZIndex()), r;
  }
  static raiseToTop(t) {
    const e = Et;
    let n;
    t instanceof ut ? n = t.stage[e(256)] : t.parent && (n = t.parent.children);
    let r = At.moveToTail(t, n);
    return r && (t.ownerLayer && (t.ownerLayer._treeDirty = !0), t instanceof ut && t.stage && t.stage.updateZIndex()), r;
  }
  static lowerToBottom(t) {
    const e = Et;
    let n;
    t instanceof ut ? n = t.stage.viewLayers : t[e(261)] && (n = t[e(261)].children);
    let r = At.moveToHead(t, n);
    return r && (t.ownerLayer && (t.ownerLayer[e(260)] = !0), t instanceof ut && t.stage && t[e(249)].updateZIndex()), r;
  }
}
function Co() {
  const s = ["reverse", "height", "outLinks", "_obb", "sin", "travel", "inLinks", "getUnionRect", "end", "7511uAgELC", "rotation", "getIntersect", "stage", "1448244fqhWGY", "10634600mkMVLN", "2441686bHwMoO", "4074190uJYYmj", "calcPointByAnchor", "getLinks", "viewLayers", "getNearestPointOnLines", "indexOf", "6862257DXOkbe", "_treeDirty", "parent", "unlinks", "1EhdtZg", "length", "_drawContentDesc", "2965LVgBEo", "getConnectionAnchor", "8622vOkTgT", "swapWithRight", "4196uOTyyv", "ownerLayer", "forEach"];
  return (Co = function() {
    return s;
  })();
}
class he {
  static resizeByFixedPoint(t, e, n, r) {
    let i = t._positionToLocalPoint(e);
    t.width = n, t.height = r;
    let o = t._positionToLocalPoint(e);
    return t.x -= o.x - i.x, t.y -= o.y - i.y, t;
  }
  static rotateAround(t, e, n, r, i) {
    const o = Et;
    return t.x = e + Math.cos(i) * r, t.y = n + Math[o(277)](i) * r, t[o(247)] = i, t;
  }
  static rotateAt(t, e, n, r) {
    let i = t.parent || t, o = t.localToWorldXY(e, n), a = i.worldToLocalXY(o.x, o.y);
    t.rotate(r), t.updateMatrix(), o = t.localToWorldXY(e, n);
    let h = i.worldToLocalXY(o.x, o.y), l = a.x - h.x, c = a.y - h.y;
    return t.x += l, t.y += c, t.updateMatrix(), t;
  }
  static _upgradeLinks(t) {
    return t[Et(255)]().filter((e) => e._upgradeParent() != null);
  }
  static getUnionRect(t) {
    let e = t[0].getRect();
    for (let n = 1; n < t.length; n++)
      e = O.union(e, t[n].getRect());
    return e;
  }
  static setXYButChildFixed(t, e, n) {
    const r = Et;
    let i = t.children;
    t.x += e, t.y += n;
    for (let o = 0; o < i[r(264)]; o++) {
      const a = i[o];
      a instanceof C && (a.x -= e, a.y -= n);
    }
  }
  static sizeFitToChildren(t, e) {
    const n = Et;
    let r = t.children;
    if (r[n(264)] == 0)
      return;
    let i = he.getUnionRect(r);
    e == null && (e = 0);
    let o = 2 * e;
    t.resize(i.width + o, i.height + o);
    let a = i.x + t.width / 2, h = i.y + t[n(274)] / 2;
    he.setXYButChildFixed(t, a - e, h - e);
  }
  static translateNodesCenterTo(t, e, n) {
    const r = Et;
    let i = e, o = n, a = [];
    a = a.concat(t);
    let h = he[r(280)](a).getCenter(), l = i - h.x, c = o - h.y;
    a.forEach((u) => {
      u.translateWith(l, c);
    });
  }
  static [Et(278)](t, e, n = null, r = null) {
    const i = Et;
    if (r == null)
      r = [];
    else if (r.includes(t))
      return null;
    if (e && e(t, n), r.push(t), t instanceof C) {
      let o = t[i(275)];
      if (o != null)
        for (let a = 0; a < o.length; a++) {
          let h = o[a];
          he[i(278)](h, e, t, r);
        }
    } else
      t instanceof j && t.end.isDisplayObjectHost() && he.travel(t[i(281)].host, e, n, r);
    return r;
  }
}
function Qe(s, t) {
  const e = Ao();
  return (Qe = function(n, r) {
    return e[n -= 387];
  })(s, t);
}
const Is = Qe;
function Ao() {
  const s = ["58467KKvCwS", "assign", "16yPeNZL", "scaleY", "57125kWpshl", "animationSystem", "165TTnjGt", "26qmLHRu", "min", "scaleBy", "12qsfREL", "objects", "88539zCEyGy", "80CfUJOo", "16099811ILOkoh", "height", "88gHrUbN", "width", "normalizePoints", "16842xFzvMb", "scaleX", "125694rSeKcX", "5344902jyoqXr"];
  return (Ao = function() {
    return s;
  })();
}
(function() {
  const s = Qe, t = Ao();
  for (; ; )
    try {
      if (parseInt(s(387)) / 1 * (-parseInt(s(390)) / 2) + -parseInt(s(406)) / 3 * (-parseInt(s(408)) / 4) + -parseInt(s(389)) / 5 * (parseInt(s(404)) / 6) + -parseInt(s(402)) / 7 * (parseInt(s(399)) / 8) + parseInt(s(405)) / 9 + parseInt(s(396)) / 10 * (parseInt(s(395)) / 11) + -parseInt(s(393)) / 12 * (-parseInt(s(397)) / 13) === 514265)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Os {
  constructor(t, e) {
    const n = Qe;
    this.x = 0, this.y = 0, this[n(403)] = 1, this.scaleY = 1, this[n(400)] = 1, this.height = 1, this.rotation = 0, this.objects = t, this.positions = e, this.positionNormals = ht[n(401)](e);
    let r = ht.getBoundingBox(e);
    this.width = r.width, this[n(398)] = r[n(398)];
  }
  resize(t, e) {
    return this.width = t, this.height = e, this;
  }
  resizeWith(t, e) {
    return this[Qe(400)] += t, this.height += e, this;
  }
  translate(t, e) {
    return this.x = t, this.y = e, this;
  }
  translateWith(t, e) {
    return this.x += t, this.y += e, this;
  }
  scale(t, e) {
    return this[Qe(403)] = t, this.scaleY = e, this;
  }
  [Is(392)](t, e) {
    const n = Is;
    this[n(403)] *= t, this[n(409)] *= e, this.resize;
  }
  rotate(t) {
    return this.rotation = t, this;
  }
  rotateWith(t) {
    return this.rotation += t, this;
  }
  updateXY(t) {
    const e = Is, n = this[e(394)];
    let r = Math[e(391)](t.length, n.length);
    for (let i = 0; i < r; i++) {
      let o = t[i];
      n[i].setXY(o.x, o.y);
    }
  }
  doLayout(t) {
    const e = Is;
    let n = this, r = this.objects, i = this.positionNormals;
    if (i = i.map((o) => {
      const a = Qe;
      let h = { x: 0.5 * n.width * o.x * n[a(403)] + n.x, y: 0.5 * n.height * o.y * n.scaleY + n.y };
      return (this.rotation !== 0 || this.rotation % 6.283185307179586 != 0) && (h = A.rotate(h.x, h.y, n.x, n.y, this.rotation)), h;
    }), t != null) {
      let o = function(l) {
        return n.updateXY(l);
      }, a = r.map((l) => ({ x: l.x, y: l.y })), h = Object[e(407)]({ from: a, to: i, update: o }, t);
      this[e(388)].anime(h).play();
    } else
      this.updateXY(i);
    return this;
  }
}
function Do() {
  const s = ["322eifytN", "6dTtgQj", "766204OVLfTc", "translate", "2095WpZoaz", "object", "23572110bZUhHj", "level", "children", "14145384CwtvZx", "3364GoMWoR", "12713499xmxagl", "length", "width", "1631523IWYJDB", "forEach", "169536crOyyk", "allVirtualNodes"];
  return (Do = function() {
    return s;
  })();
}
function No(s, t) {
  const e = Do();
  return (No = function(n, r) {
    return e[n -= 418];
  })(s, t);
}
function Mo() {
  const s = ["354810SZdEcj", "children", "3740009ycwpPn", "359208GcnXnD", "forEach", "5435Ltrwpp", "117bKpsRB", "length", "517uuRFhf", "59338tyexPs", "483700IDVSRe", "root", "height", "14470UBizdd", "69YZfoxc", "3714HLrQkf", "subtreeWidth"];
  return (Mo = function() {
    return s;
  })();
}
function zo(s, t) {
  const e = Mo();
  return (zo = function(n, r) {
    return e[n -= 445];
  })(s, t);
}
(function() {
  const s = No, t = Do();
  for (; ; )
    try {
      if (-parseInt(s(420)) / 1 + parseInt(s(426)) / 2 * (parseInt(s(425)) / 3) + parseInt(s(434)) / 4 * (-parseInt(s(428)) / 5) + -parseInt(s(422)) / 6 * (-parseInt(s(424)) / 7) + parseInt(s(433)) / 8 + parseInt(s(435)) / 9 + -parseInt(s(430)) / 10 === 905651)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})(), function() {
  const s = zo, t = Mo();
  for (; ; )
    try {
      if (parseInt(s(445)) / 1 + parseInt(s(454)) / 2 * (parseInt(s(459)) / 3) + parseInt(s(455)) / 4 + -parseInt(s(450)) / 5 * (parseInt(s(460)) / 6) + parseInt(s(447)) / 7 + -parseInt(s(448)) / 8 * (parseInt(s(451)) / 9) + -parseInt(s(458)) / 10 * (parseInt(s(453)) / 11) === 367834)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
}();
const hn = Bo;
function Bo(s, t) {
  const e = jo();
  return (Bo = function(n, r) {
    return e[n -= 455];
  })(s, t);
}
function jo() {
  const s = ["pointsLayout", "579705FNBVLH", "animationSystem", "sizeFitToChildren", "traverse", "94432ntZVrO", "11ObLGwV", "47902fUhzDi", "1418754SPCrUZ", "1559290pNfAhu", "891216cHXKps", "986212bOmvIj", "map", "vertexes", "10DZCNha", "3qytwAV", "isTree", "21OTXRxv", "starLayout"];
  return (jo = function() {
    return s;
  })();
}
(function() {
  const s = Bo, t = jo();
  for (; ; )
    try {
      if (-parseInt(s(467)) / 1 * (-parseInt(s(455)) / 2) + -parseInt(s(456)) / 3 * (parseInt(s(471)) / 4) + parseInt(s(461)) / 5 + parseInt(s(468)) / 6 + -parseInt(s(458)) / 7 * (-parseInt(s(465)) / 8) + -parseInt(s(470)) / 9 + -parseInt(s(469)) / 10 * (parseInt(s(466)) / 11) === 125816)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Sh {
  constructor(t, e) {
    this.animationSystem = t, this.graphSystem = e;
  }
  [hn(460)](t, e) {
    let n = new Os(t, e);
    return n.animationSystem = this.animationSystem, n;
  }
  [hn(459)](t) {
    const e = hn;
    !t[e(457)]() && (t = Tn.createMinimalSpanningTree(t));
    let n = t[e(464)](null).filter((a) => a instanceof xn), r = function(a) {
      const h = No, l = a.root, c = 2 * Math.max(l.object[h(419)], l[h(429)].height), u = Math.PI / 2;
      return function f(g, y = 0) {
        const I = h;
        g.level = y, g.children[I(421)]((x) => {
          f(x, y + 1);
        });
      }(l), function f(g, y) {
        const I = h, x = y.get(g.level) || 0;
        y.set(g.level, x + 1), g.children[I(421)]((m) => {
          f(m, y);
        });
      }(l, /* @__PURE__ */ new Map()), function f(g, y, I, x) {
        const m = h, w = Math.pow(g[m(431)], 1.5) * c;
        if (g[m(431)] === 0) {
          g[m(427)](0, 0);
          const _ = 2 * Math.PI / g.children[m(418)];
          g.children[m(421)]((P, v) => {
            f(P, v * _, _);
          });
        } else {
          const _ = y + I / 2, P = Math.cos(_) * w, v = Math.sin(_) * w;
          if (g.translate(P, v), g[m(432)][m(418)] > 0) {
            const D = Math.min(I / g.children.length, u), W = _ - D * (g.children.length - 1) / 2;
            g.children.forEach((et, pe) => {
              f(et, W + pe * D, D);
            });
          }
        }
      }(l, 0, 2 * Math.PI), a[h(423)];
    }(this.graphSystem.toTree(t)), i = n[e(472)]((a) => a.object), o = new Os(i, r);
    return o.animationSystem = this.animationSystem, o;
  }
  treeLayout(t) {
    const e = hn;
    !t[e(457)]() && (t = Tn.createMinimalSpanningTree(t));
    let n = t.traverse(null).filter((a) => a instanceof xn), r = function(a) {
      const h = zo, l = Math.max(a.root.object.width, a[h(456)].object[h(457)]), c = l / 2, u = l, f = l, g = c, y = a.root;
      return function I(x) {
        const m = h;
        if (!x.subtreeWidth)
          if (x.children[m(452)] === 0)
            x[m(461)] = l;
          else {
            let w = 0;
            x.children.forEach((_) => {
              w += I(_);
            }), w += g * (x.children.length - 1), x.subtreeWidth = Math.max(w, l);
          }
        return x.subtreeWidth;
      }(y), function I(x, m) {
        const w = h;
        if (x.children.length === 0)
          return x.translate(m + c, x.y), m + l;
        let _ = m, P = 0;
        return x.children[w(449)]((v, D) => {
          const W = w;
          _ = I(v, _), P += v.x, D < x.children[W(452)] - 1 && (_ += g);
        }), P /= x[w(446)][w(452)], x.translate(P, x.y), _;
      }(y, 0), function I(x, m = 0) {
        x.level = m, x.y = m * (f + u), x.children.forEach((w) => {
          I(w, m + 1);
        });
      }(y), a.allVirtualNodes;
    }(this.graphSystem.toTree(t)), i = n.map((a) => a.object), o = new Os(i, r);
    return o[e(462)] = this.animationSystem, o;
  }
  travelTree(t, e) {
    const n = hn;
    if (!t.isTree())
      throw new Error("graph is not a tree");
    return e == null && (e = t[n(473)][0]), t.travelNext(e);
  }
  sizeFitToChildren(t, e) {
    return he[hn(463)](t, e);
  }
}
const Ts = sr;
function Wo() {
  const s = ["238364guHAeg", "1428561KgeuYE", "423HjnQQt", "Link.Label", "EllipseNode", "121464AdWGyt", "DefaultFont", "top", "rgba(128,128,128,0.8)", "1094952UaTSXN", "center", "black", "SelectArea", "790166ESyRXt", "ZShapeLink", "DefaultConfig", "10yDEfJp", "1772442zNkbnt", "rgba(0,0,236,0.1)", "middle", "getStyle", "134544LgokzY", "NodeSelectedStyle"];
  return (Wo = function() {
    return s;
  })();
}
(function() {
  const s = sr, t = Wo();
  for (; ; )
    try {
      if (parseInt(s(151)) / 1 + parseInt(s(143)) / 2 + parseInt(s(154)) / 3 + parseInt(s(153)) / 4 * (-parseInt(s(146)) / 5) + -parseInt(s(162)) / 6 + parseInt(s(147)) / 7 + -parseInt(s(158)) / 8 * (parseInt(s(155)) / 9) === 243745)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Ro {
  constructor(t) {
    const e = sr;
    if (this[e(145)] = { fillStyle: "black", strokeStyle: "black", font: Me.DefaultFont }, this[e(142)] = { border: "1px rgba(0,0,0,0.5)", fillStyle: "rgba(0,0,236,0.1)" }, this[e(152)] = { borderWidth: 0, shadowColor: e(161), shadowBlur: 5, shadowOffsetX: 3, shadowOffsetY: 3 }, this.LinkSelectedStyle = { shadowColor: "rgba(128,128,128,0.9)", shadowBlur: 5, shadowOffsetX: 3, shadowOffsetY: 3 }, this["Link.Arrow"] = { lineWidth: 1 }, this[e(156)] = { textPosition: Bt.center, textBaseline: Tt.middle, textAlign: Ot.center, lineWidth: 0 }, this.Node = { textPosition: Bt.cb, textAlign: Ot.center, textBaseline: Tt[e(160)], lineWidth: 1 }, this.ImageNode = { textPosition: Bt.cb, textAlign: Ot.center, textBaseline: Tt.top, lineWidth: 1 }, this.CanvasNode = { textPosition: Bt.cb, textAlign: Ot.center, textBaseline: Tt.top, lineWidth: 1 }, this.TextNode = { textPosition: Bt.center, textAlign: Ot.center, textBaseline: Tt.middle, lineWidth: 0 }, this[e(157)] = { textPosition: Bt.cb, textAlign: Ot.center, textBaseline: Tt.top, lineWidth: 1 }, this.TipNode = { textPosition: Bt.ct, textAlign: Ot[e(163)], textBaseline: Tt.top, lineWidth: 1 }, this.ShapeNode = { textPosition: Bt.cb, textAlign: Ot[e(163)], textBaseline: Tt.top, lineWidth: 1 }, this.VideoNode = { textPosition: Bt.cb, textAlign: Ot.center, textBaseline: Tt[e(160)] }, this.HtmlNode = { textPosition: Bt.cb, textAlign: Ot[e(163)], textBaseline: Tt.top }, this.RatioNode = { textPosition: Bt.center, textAlign: Ot.center, textBaseline: Tt[e(149)] }, this.Link = { lineWidth: 1 }, this.FoldLink = { lineWidth: 1 }, this.QuadBezierLink = { lineWidth: 1 }, this.AutoFoldLink = { lineWidth: 1 }, this.BezierLink = { lineWidth: 1 }, this.ArcLink = { lineWidth: 1 }, this[e(144)] = { lineWidth: 1 }, t == null)
      return;
    let n = Object.keys(t);
    for (let r = 0; r < n.length; r++) {
      let i = n[r];
      Object.assign(this[i], t[i]);
    }
  }
  toJSON() {
    let t = {}, e = Object.keys(this);
    for (let n = 0; n < e.length; n++) {
      let r = e[n], i = Al[r], o = this[r], a = ve.diff(o, i);
      a != null && (t[r] = a);
    }
    return t;
  }
}
function sr(s, t) {
  const e = Wo();
  return (sr = function(n, r) {
    return e[n -= 141];
  })(s, t);
}
const Al = new Ro();
class Dn {
  constructor(t, e) {
    this.name = t, this.content = new Ro(e);
  }
  copy(t) {
    let e = JSON.parse(JSON.stringify(this.content));
    return new Dn(t, e);
  }
  setStyle(t, e) {
    let n = this.content[t];
    if (n == null)
      throw new Error("setStyle: className not exist: " + t);
    Object.assign(n, e);
  }
  [Ts(150)](t) {
    return this.content[t];
  }
}
let Zn = new Dn(Me.DefaultLightName, { DefaultConfig: { fillStyle: "rgba(0,0,0,0)", strokeStyle: Ts(141), font: Me[Ts(159)] }, SelectArea: { border: "1px solid rgba(0,0,0,0.5)", backgroundColor: Ts(148) } });
const Mt = "#e0e0e0";
let Ur = new Dn(Me.DefaultDarkName, { DefaultConfig: { fillStyle: "rgba(0,0,0,0)", strokeStyle: Mt, font: Me.DefaultFont }, SelectArea: { border: "1px solid rgba(255,255,255,0.5)", backgroundColor: "rgba(255,255,255,0.2)", lineWidth: 0 }, "Link.Label": { color: Mt }, Node: { color: Mt, lineWidth: 1 }, CanvasNode: { color: Mt, lineWidth: 1 }, ImageNode: { color: Mt, lineWidth: 1 }, TextNode: { color: Mt }, TipNode: { color: Mt }, ShapeNode: { color: Mt }, EllipseNode: { color: Mt, lineWidth: 1 }, VideoNode: { color: Mt }, RatioNode: { color: Mt }, HtmlNode: { color: Mt } });
function Fo() {
  const s = ["markDirty", "theme not exist:", "4335597pCelmb", "classList", "1561497pEyGKN", "53874YIbMUk", "name", "defTheme", "Link.Arrow", "defStyles", "rgb(255,255,255)", "style", "copy", "15096rwfCGg", "906860NdvXHX", "229607zAvAwe", "2671207hihsWK", "startsWith", "getTheme", "getChangedProps", "currentTheme", "setTheme", "fromJson", "addTheme", "theme not exist.", "stage", "layersContainer", "24xMBfco", "themes", "keys", "Resources", "isMobileDevice", "length", "beginArrow", "Link", "260CDXAAW"];
  return (Fo = function() {
    return s;
  })();
}
const zt = rr;
function rr(s, t) {
  const e = Fo();
  return (rr = function(n, r) {
    return e[n -= 186];
  })(s, t);
}
(function() {
  const s = rr, t = Fo();
  for (; ; )
    try {
      if (-parseInt(s(209)) / 1 + -parseInt(s(208)) / 2 + -parseInt(s(198)) / 3 + parseInt(s(207)) / 4 + -parseInt(s(193)) / 5 * (-parseInt(s(199)) / 6) + -parseInt(s(210)) / 7 + -parseInt(s(221)) / 8 * (-parseInt(s(196)) / 9) === 330744)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class kh {
  constructor(t) {
    const e = rr;
    this.themes = {}, this.defStyles = {}, this[e(219)] = t, this.addTheme(Zn), this.addTheme(Ur), this[e(215)](Zn[e(200)]);
  }
  [zt(217)](t) {
    this.themes[t.name] = t;
  }
  getTheme(t) {
    return this.themes[t];
  }
  customStyleToJSON(t) {
    const e = zt;
    let n = JSON.parse(JSON.stringify(this.themes));
    delete n.DefaultLight, delete n.DefaultDark;
    let r = {}, i = { themeName: this.currentTheme[e(200)], themes: n, styles: r }, o = Object.keys(this[e(203)]);
    for (let a = 0; a < o[e(190)]; a++) {
      let h = o[a], l = this.defStyles[h].toJSON(t);
      r[h] = l;
    }
    return i;
  }
  clear() {
    const t = zt;
    this[t(203)] = {};
    for (let e in this[t(186)])
      e != "DefaultLight" && e != "DefaultDark" && delete this[t(186)][e];
    this[t(194)]();
  }
  [zt(216)](t) {
    const e = zt;
    let n = t.CustomStyle;
    if (n == null)
      return;
    let r = n.themes, i = n.styles || {};
    if (r != null) {
      let h = Object.keys(r);
      for (let l = 0; l < h.length; l++) {
        let c = h[l], u = r[c], f = new Dn(c, u.content);
        this.addTheme(f);
      }
    }
    let o = t[e(188)] || [];
    this.defStyles = {};
    let a = Object[e(187)](i).filter((h) => h.startsWith("."));
    for (let h = 0; h < a[e(190)]; h++) {
      let l = a[h], c = i[l];
      this[e(203)][l] = Jt.fromJSON(c, o);
    }
    n.themeName != null && this.setTheme(n.themeName);
  }
  defClass(t, e) {
    if (e instanceof Jt)
      return void (this.defStyles[t] = e);
    let n = new Jt();
    Object.assign(n, e), this.defStyles[t] = n, !t.startsWith(".") && this.markDirty();
  }
  removeClass(t) {
    const e = zt;
    delete this[e(203)][t], !t[e(211)](".") && this.markDirty();
  }
  getClass(t) {
    return this.defStyles[t];
  }
  markDirty() {
    this[zt(219)].viewLayers.forEach((t) => {
      t._markAllDirty();
    });
  }
  start() {
    const t = zt;
    this[t(215)](this[t(214)].name);
  }
  setTheme(t) {
    const e = zt;
    let n = this[e(212)](t);
    if (n == null)
      throw new Error(e(218));
    this[e(214)] = n, this.markDirty(), ze[e(189)] && this.stage.viewLayers.length === 1 && (n === Ur ? this.stage.layersContainer.style.backgroundColor = e(204) : n === Zn && (this.stage[e(220)][e(205)].backgroundColor = "rgb(36,36,36)")), this.stage.update();
  }
  computeStyle(t) {
    const e = zt;
    let n = this, r = {}, i = this.currentTheme, o = t.className;
    t.parent instanceof j && (t === t.parent.label ? o = "Link.Label" : (t === t.parent[e(191)] || t === t.parent.endArrow) && (o = e(202)));
    let a = i.getStyle(o);
    a == null && (t instanceof C ? a = i.getStyle("Node") : t instanceof j && (a = i.getStyle(e(192)))), a != null && Object.assign(r, a);
    let h = n.getClass(o);
    h != null && Object.assign(r, h);
    let l = t[e(197)];
    if (l[e(190)] > 0)
      for (let u = 0; u < l.length; u++) {
        const f = l[u];
        let g = n.getClass(f);
        g != null && Object.assign(r, g);
      }
    let c = t[e(205)][e(213)]();
    return Object.assign(r, c), t._computedStyle.update(r), t._afterStyleComputed(), t._computedStyle;
  }
  [zt(201)](t, e) {
    const n = zt;
    let r = this.getTheme(e);
    if (r == null)
      throw new Error(n(195) + e);
    let i = r[n(206)](t);
    return this.addTheme(i), i;
  }
}
function Ho() {
  const s = ["getCurrentLayer", "90aKbKCB", "stage", "612021IsKxdG", "210369pEABvX", "2viqhWE", "camera", "object", "103104nVciXb", "16MLAeoI", "2547081JkjXPB", "236103oPyABr", "flatten", "3028480Wqxpsx", "painted", "2839260nnmjpz", "inputSystem", "children"];
  return (Ho = function() {
    return s;
  })();
}
function Ye(s, t) {
  const e = Ho();
  return (Ye = function(n, r) {
    return e[n -= 328];
  })(s, t);
}
(function() {
  const s = Ye, t = Ho();
  for (; ; )
    try {
      if (parseInt(s(337)) / 1 + -parseInt(s(339)) / 2 * (-parseInt(s(338)) / 3) + -parseInt(s(342)) / 4 + parseInt(s(331)) / 5 + parseInt(s(335)) / 6 * (-parseInt(s(345)) / 7) + -parseInt(s(343)) / 8 * (parseInt(s(344)) / 9) + parseInt(s(329)) / 10 === 455115)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Dl {
  constructor(t) {
    const e = Ye;
    this.mode = e(330), this[e(336)] = t;
  }
  enter(t) {
    const e = Ye;
    if (this.object != null && this.quit(), !(t != null && t !== this.object && t.isNode && t.getRoot() instanceof ut))
      return void (this.object = null);
    let n = this[e(336)].getCurrentLayer();
    if (n == null)
      return;
    this.object = t, this.hideList = lt[e(328)](n[e(333)], (i) => i !== t), t.isSelected = !1;
    let r = this.stage.camera;
    this.hideList.forEach(function(i, o) {
      r.exclude(i);
    });
  }
  quit() {
    const t = Ye;
    if (this.object = null, this.hideList != null) {
      let e = this.stage[t(340)];
      this.hideList.forEach(function(n, r) {
        e.include(n);
      }), this.hideList = null;
    }
    this.stage[t(340)].markDirty();
  }
  getObject() {
    const t = Ye;
    return this.object || this[t(336)][t(334)]();
  }
  getMouseXY() {
    const t = Ye;
    return this.object == null ? { x: this.stage.inputSystem.xInWorld, y: this.stage[t(332)].yInWorld } : this[t(341)].worldToLocalXY(this.stage.inputSystem.xInWorld, this.stage.inputSystem.yInWorld);
  }
}
const E = ir;
function Xo() {
  const s = ["400tsKTHe", "zoom", "_locked", "removeEventListener", "locked", "zoomOutFactor", "zoomOutLimit", "6BVxROy", "offsetWith", "zoomInLimit", "offsetX", "12OcGXoW", "_init", "screenTransform", "4444561BdgSzD", "toWorldRect", "toWorldXY", "getTransform", "lookAtY", "3eJfhzH", "21987yjfBZh", "screenInvertTransform", "viewportRect", "zoomBy", "158KzNDUf", "9950fEPzcz", "949928PRpgIm", "map", "middle", "pointXY", "5560295HvbwyP", "stage", "height", "enter", "247TuVEdI", "include", "_offsetY", "_offsetX", "zoomToFit", "toAABB", "_updateMatrix", "toScreenRect", "set", "lookAtObject", "238276CUPNCl", "reset", "camera", "lookAt", "_cameraDirty", "1038136aVKClS", "getCenter", "getAABB", "28kWrIyv", "toScreenXY", "unionRects", "localView", "points", "quit", "has", "scale", "_excludeMap", "addEventListener", "getCurrentLayer", "toPoints"];
  return (Xo = function() {
    return s;
  })();
}
(function() {
  const s = ir, t = Xo();
  for (; ; )
    try {
      if (parseInt(s(217)) / 1 * (-parseInt(s(218)) / 2) + -parseInt(s(212)) / 3 * (parseInt(s(173)) / 4) + -parseInt(s(159)) / 5 * (-parseInt(s(200)) / 6) + -parseInt(s(181)) / 7 * (parseInt(s(178)) / 8) + parseInt(s(213)) / 9 * (parseInt(s(193)) / 10) + -parseInt(s(207)) / 11 * (parseInt(s(204)) / 12) + parseInt(s(163)) / 13 * (parseInt(s(219)) / 14) === 730229)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Lh extends $e {
  constructor(t, e) {
    super(t, e);
  }
}
function ir(s, t) {
  const e = Xo();
  return (ir = function(n, r) {
    return e[n -= 157];
  })(s, t);
}
class Ph extends _e {
  constructor(t) {
    const e = ir;
    super(), this._excludeMap = /* @__PURE__ */ new WeakMap(), this._offsetX = 0, this._offsetY = 0, this._scale = 1, this._cameraDirty = !0, this.screenTransform = It.allocate(), this.screenInvertTransform = It.allocate(), this.enableWheelZoom = !0, this._locked = !1, this.zoomInFactor = 1.25, this[e(198)] = 0.8, this[e(202)] = 10, this.zoomOutLimit = 0.1, this[e(215)] = new O(0, 0, 1, 1), this.lookAtX = 0, this[e(211)] = 0, this[e(160)] = t, this._init(), this[e(184)] = new Dl(t), this.localView.mode = null;
  }
  [E(205)]() {
    const t = E;
    this.offsetX = 0, this.offsetY = 0, this.scale = 1, this.lookAtX = 0, this.lookAtY = 0, this[t(195)] = !1, this.viewportRect.setTo(0, 0, 1, 1);
  }
  lock() {
    this._locked = !0;
  }
  unlock() {
    this._locked = !1;
  }
  set locked(t) {
    this._locked = t;
  }
  get [E(197)]() {
    return this._locked;
  }
  exclude(t) {
    const e = E;
    this._excludeMap[e(171)](t, !0), this.markDirty();
  }
  [E(164)](t) {
    this[E(189)].delete(t), this.markDirty();
  }
  canSee(t) {
    const e = E;
    return !this[e(189)][e(187)](t);
  }
  lookAt(t, e) {
    const n = E;
    this.lookAtX = t, this[n(211)] = e;
    let r = this.toScreenXY(t, e), i = this.stage[n(179)](), o = i.x - r.x, a = i.y - r.y;
    this.offsetWith(o / this.scale, a / this.scale);
  }
  getOffsetInScreen() {
    const t = E;
    let e = this.toScreenXY(0, 0);
    return { x: e.x - this.stage.halfWidth, y: e.y - this[t(160)].halfHeight };
  }
  zoomOut() {
    const t = E;
    this.zoomBy(this[t(198)]);
  }
  zoomIn() {
    this[E(216)](this.zoomInFactor);
  }
  zoom(t) {
    let e = t / this[E(188)];
    this.zoomBy(e, this.lookAtX, this.lookAtY);
  }
  [E(190)](t, e) {
    super[E(190)](t, e);
  }
  [E(196)](t, e) {
    super[E(196)](t, e);
  }
  hasListener(t) {
    return super.hasListener(t);
  }
  zoomBy(t, e, n) {
    const r = E;
    if (this[r(195)])
      return;
    if (this.scale * t > this.zoomInLimit ? t = this.zoomInLimit / this.scale : this.scale * t < this.zoomOutLimit && (t = this[r(199)] / this[r(188)]), this.hasListener("zoom")) {
      let l = new Lh(r(194), { cancelable: !0, zoomInfo: { factor: t, x: e, y: n } });
      if (this.dispatchEvent(l), l.defaultPrevented == 1)
        return;
    }
    if (this[r(169)](), e == null || n == null) {
      let l = this.stage.getRect().getCenter(), c = this.toWorldXY(l.x, l.y);
      e = c.x, n = c.y;
    }
    let i = this.toScreenXY(e, n);
    this.scale *= t, this._updateMatrix();
    let o = this.toScreenXY(e, n), a = (i.x - o.x) / this.scale, h = (i.y - o.y) / this.scale;
    this.offsetWith(a, h), this[r(169)]();
  }
  [E(182)](t, e) {
    return this.screenTransform.pointXY(t, e);
  }
  [E(209)](t, e) {
    const n = E;
    return this[n(214)][n(158)](t, e);
  }
  [E(208)](t) {
    const e = E;
    return ce.toAABB(new O(), this[e(214)].points([], t.toPoints()));
  }
  [E(170)](t) {
    const e = E;
    return ce[e(168)](new O(), this.screenTransform[e(185)]([], t[e(192)]()));
  }
  _dragWith(t, e) {
    const n = E;
    this._locked || this[n(201)](t, e);
  }
  lookOnly(t) {
    const e = E;
    t == null ? this.stage.camera[e(184)].quit() : this.stage.camera.localView[e(162)](t), this.markDirty();
  }
  getShowOnlyObject() {
    return this.localView.object;
  }
  [E(167)](t = {}) {
    const e = E, n = this.stage;
    let r = n.viewLayers.map((c) => c.getAABB()), i = O[e(183)](r), o = t.padding || 0, a = (n.width - 2 * o) / i.width, h = (n[e(161)] - 2 * o) / i.height, l = Math.min(a, h);
    this.lookAt(i.center, i[e(157)]), this[e(194)](l);
  }
  lookAtContentCenter(t) {
    const e = E, n = this.stage;
    t == null && (t = n[e(191)]()), t && n[e(175)][e(172)](t.children);
  }
  [E(172)](t) {
    const e = E;
    let n;
    if (t instanceof lt)
      n = t.getAABB();
    else {
      if (t.length == 0)
        return void this.lookAt(0, 0);
      let r = t[e(220)]((i) => i[e(180)]());
      n = O.unionRects(r);
    }
    this[e(176)](n.x + 0.5 * n.width, n.y + 0.5 * n.height);
  }
  _updateMatrix() {
    const t = E;
    let e = this.screenTransform;
    e.identity();
    let n = this[t(203)] + 0.5 * this.stage.width, r = this.offsetY + 0.5 * this.stage.height;
    e.scale(this[t(188)], this.scale), e.translate(n, r), this.screenInvertTransform = e.invert();
    let i = this.stage.getRect().getCenter(), o = this.toWorldXY(i.x, i.y);
    this.lookAtX = o.x, this.lookAtY = o.y;
    let a = this.stage.getRect().toPoints(), h = ce.toAABB(new O(), this.screenInvertTransform.points([], a));
    this.viewportRect = h;
  }
  [E(174)]() {
    const t = E;
    this._init(), this.localView[t(186)]();
  }
  offsetWith(t, e) {
    const n = E;
    this[n(166)] += t, this[n(165)] += e, this[n(177)] = !0;
  }
  setOffset(t, e) {
    const n = E;
    this._offsetX = t, this[n(165)] = e, this[n(177)] = !0;
  }
  isDirty() {
    return this._cameraDirty;
  }
  markDirty() {
    this._cameraDirty = !0;
  }
  clearDirty() {
    this._cameraDirty = !1;
  }
  [E(210)]() {
    return this[E(206)];
  }
  getScreenTransform() {
    return this.screenTransform;
  }
  getObjectScreenTransform(t) {
    let e = t.getWorldTransform(), n = e.copy();
    return It.multiply(n, this.screenTransform, e), n;
  }
  get offsetX() {
    return this[E(166)];
  }
  set offsetX(t) {
    const e = E;
    this[e(166)] !== t && (this[e(177)] = !0), this._offsetX = t;
  }
  get offsetY() {
    return this._offsetY;
  }
  set offsetY(t) {
    this._offsetY !== t && (this._cameraDirty = !0), this._offsetY = t;
  }
  get scale() {
    return this._scale;
  }
  set [E(188)](t) {
    this._scale !== t && (this._cameraDirty = !0), this._scale = t;
  }
}
function Yt(s, t) {
  const e = Yo();
  return (Yt = function(n, r) {
    return e[n -= 280];
  })(s, t);
}
const Pe = Yt;
function Yo() {
  const s = ["cacheCanvas", "concat", "getCurrentLayer", "rect", "901159IcQyen", "pointerY", "7296850OBIiIJ", "11crsbDd", "scale", "stage", "style", "rectObj", "rgba(255,255,255,0.5)", "_state", "_getStageExportAABB", "_updateTimer", "getHeight", "visible", "contains", "restore", "872KnOAmn", "3924057jNBceH", "addEventListener", "offsetX", "forEach", "dirty", "hide", "_needPaint", "fillStyle", "isDraging", "canvas", "1487965efzhhN", "9QMggJj", "render", "strokeStyle", "flatten", "setSize", "getStyle", "pointerX", "paintDragRect", "_overviewTimer", "isPointerDown", "4sYIQDG", "absolute", "drawImage", "layersContainer", "getWidth", "canSee", "bottom", "pointerupHandler", "offsetY", "max", "18jlqkGx", "show", "context", "createElement", "pointerdown", "mousewheel", "previousX", "styleSystem", "paint", "height", "2880632HrJNHM", "_paintFlattenObjects", "39375048iXVeFF", "2102agRVsM", "appendChild", "width"];
  return (Yo = function() {
    return s;
  })();
}
(function() {
  const s = Yt, t = Yo();
  for (; ; )
    try {
      if (parseInt(s(289)) / 1 * (-parseInt(s(312)) / 2) + -parseInt(s(313)) / 3 * (parseInt(s(334)) / 4) + parseInt(s(323)) / 5 * (-parseInt(s(344)) / 6) + parseInt(s(296)) / 7 + parseInt(s(286)) / 8 * (-parseInt(s(324)) / 9) + parseInt(s(298)) / 10 * (parseInt(s(299)) / 11) + parseInt(s(288)) / 12 === 662327)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Oh extends _h {
  constructor(t) {
    super();
  }
  paintSelected(t) {
  }
  overviewPaint(t) {
    const e = Yt, n = t.stage;
    let r = this[e(346)];
    r.save();
    const i = n[e(283)].currentTheme[e(329)]("DefaultConfig");
    this[e(346)].fillStyle = i.fillStyle, this[e(346)].strokeStyle = i[e(326)];
    let o = n.camera.getTransform().m;
    r.transform(o[0], o[1], o[2], o[3], o[4], o[5]), t._computedStyle.applyTo(r);
    let a = n.camera;
    const h = t._flattenList.filter((l) => l[e(305)][e(319)] && a[e(339)](l));
    this._paintFlattenObjects(h, n.styleSystem), r[e(311)]();
  }
  exportPaintObjects(t, e) {
    const n = Yt;
    if (t[0] instanceof ut)
      t[n(316)]((r) => {
        r instanceof ut && this.overviewPaint(r);
      });
    else {
      let r = [];
      t.forEach((i) => {
        const o = n;
        r.push(i), r = r[o(293)](lt[o(327)](i.children, null));
      }), this[n(287)](r, e);
    }
  }
}
class Nl {
  constructor(t) {
    const e = Yt;
    this.visible = !1, this[e(317)] = !0, this.paintInterval = 500, this[e(333)] = !1, this[e(321)] = !1, this.previousX = 0, this.previousY = 0, this[e(330)] = 0, this.pointerY = 0, this.dx = 0, this.dy = 0, this.stage = t, this.render = new Oh(t);
    let n = this.render.canvas;
    n.style.backgroundColor = e(304), n.style.border = "solid 1px gray", n.style.position = e(335), n[e(302)].zIndex = "" + (t.handlerLayer.zIndex + 1), n[e(302)].opacity = "0.7", n.style.right = "0", n.style.left = null, n.style[e(340)] = "0", t[e(337)][e(290)](n), this[e(322)] = n, this.domElement = n, this.render.setSize(200, 123.6), this[e(292)] = document[e(347)]("canvas"), this.rectObj = new C(null, 0, 0), this[e(303)][e(318)](), this.initEvent(), this.hide();
  }
  setStyles(t) {
    const e = Yt;
    if (t == null)
      return this;
    for (let n in t)
      this.canvas[e(302)][n] = t[n];
    return this;
  }
  initEvent() {
    const t = Yt;
    let e = this, n = [t(280), "pointerup", "pointermove", t(281), "pointerout"], r = e.render.canvas;
    n.map(function(i) {
      const o = t;
      ze[o(314)](r, i, function(a) {
        const h = o;
        if (e[h(321)] = !1, e.stage.getCurrentLayer() == null)
          return;
        if (a.offsetX < 0 || a.offsetY < 0 || i == "pointerout")
          return void (e.isPointerDown = !1);
        e.isPointerDown && i == "pointermove" && (e.isDraging = !0), e.previousX = e.pointerX, e.previousY = e.pointerY, e.pointerX = a[h(315)], e[h(297)] = a[h(342)], e.dx = e.pointerX - e[h(282)], e.dy = e.pointerY - e.previousY;
        let l = i + "Handler";
        if (e[l] == null)
          throw new Error("Overview has no handler:" + i);
        e[l](a);
      });
    });
  }
  show() {
    const t = Yt;
    this[t(309)] = !0, this[t(325)].show(), clearInterval(this[t(332)]);
    let e = this;
    return this._overviewTimer = setInterval(function() {
      e.dirty && e.update();
    }, this.paintInterval), this;
  }
  hide() {
    const t = Yt;
    return this[t(309)] = !1, this[t(325)].hide(), clearInterval(this._overviewTimer), this;
  }
  getWidth() {
    const t = Yt;
    return this.render[t(338)]();
  }
  getHeight() {
    return this.render.getHeight();
  }
  setSize(t, e) {
    const n = Yt;
    return this[n(325)][n(328)](t, e);
  }
  [Pe(284)]() {
    const t = Pe;
    this[t(317)] = !1;
    let e = this[t(301)], n = this[t(325)], r = this.render[t(346)];
    if (this.render.clearAll(), e[t(294)]() == null)
      return;
    let i = this.stage.exportSystem[t(306)]();
    if (this.isDraging)
      r.drawImage(this.cacheCanvas, 0, 0);
    else {
      let o = this[t(338)](), a = this[t(308)](), h = o / Math[t(343)](o, i[t(291)]), l = a / Math.max(a, i[t(285)]);
      r.save(), r[t(300)](h, l), r.translate(-i.x, -i.y), e.getAllVisibleLayers()[t(316)](function(u) {
        n.overviewPaint(u);
      }), r.restore();
      let c = this.cacheCanvas.getContext("2d");
      this.cacheCanvas[t(291)] = this.canvas[t(291)], this[t(292)].height = this.canvas[t(285)], c[t(336)](this.canvas, 0, 0);
    }
    this.paintDragRect(r, i);
  }
  [Pe(331)](t, e) {
    const n = Pe;
    let r = this[n(303)], i = this.stage, o = this.render, a = Math.max(e.width, i.width), h = Math.max(e.height, i.height), l = i.width / a, c = i.height / h;
    if (l == 1 && c == 1)
      return void r.hide();
    r[n(345)]();
    let u = o.getWidth() * l, f = o[n(308)]() * c;
    r.resize(u, f);
    let g = o[n(338)]() / a, y = o.getHeight() / h, I = -e.x * g, x = -e.y * y;
    I < 0 && (I = 0), x < 0 && (x = 0), I + r.width > o[n(338)]() && (I = o.getWidth() - r.width), x + r.height > o.getHeight() && (x = o[n(308)]() - r[n(285)]), r.translate(I, x), t.save(), t.lineWidth = 2, t[n(320)] = "rgba(0,250,50,0.2)", t.strokeStyle = "red", t.beginPath(), t[n(295)](r.x, r.y, r.width, r.height), t.stroke(), t.fill(), t[n(311)]();
  }
  update() {
    this.visible && this.paint();
  }
  pointerdownHandler(t) {
    const e = Pe;
    this.isPointerDown = !0;
    let n = this[e(303)].getRect(), r = t.offsetX, i = t[e(342)];
    n[e(310)](r, i);
    let o = r - (this.rectObj.x + this[e(303)].width / 2), a = i - (this.rectObj.y + this[e(303)][e(285)] / 2);
    this.moveWith(o, a);
  }
  mousedragHandler() {
    let t = this.dx, e = this.dy;
    this.moveWith(t, e);
  }
  moveWith(t, e) {
    const n = Pe;
    if (!this.rectObj.visible)
      return;
    t < 0 && this.rectObj.x + t <= 0 && (t = -this[n(303)].x), t > 0 && this.rectObj.x + this[n(303)][n(291)] >= this.getWidth() && (t = this.getWidth() - this[n(303)].width - this.rectObj.x), e < 0 && this.rectObj.y <= 0 && (e = -this.rectObj.y), e > 0 && this.rectObj.y + this[n(303)][n(285)] >= this.getHeight() && (e = this.getHeight() - this.rectObj.height - this.rectObj.y), this.rectObj.translateWith(t, e);
    let r = this[n(301)].exportSystem._getStageExportAABB(), i = r.width, o = r.height, a = i * (t / this.getWidth()), h = o * (e / this[n(308)]());
    this.stage.camera._dragWith(-a / this.stage.camera.scale, -h / this.stage.camera.scale);
    let l = this;
    this[n(307)] = setTimeout(function() {
      l.update();
    }, 20);
  }
  mousewheelHandler(t) {
    t.preventDefault();
  }
  pointermoveHandler() {
    this[Pe(333)] && this.mousedragHandler();
  }
  [Pe(341)]() {
    this.isPointerDown = !1;
  }
}
function Uo() {
  const s = ["4189515PUrxsv", "toDataURL", "7zfgQnL", "2835816pLNQou", "name", "' alt='from canvas'/>", "unionRects", "55731uJLWLO", "getTime", "172CtIPpa", "initMouseEvent", "save", "stage", "strokeStyle", "styleSystem", "open", "996952dgwnHr", "MouseEvents", "length", "toScreenRect", "_exportPaint", "render", "getStyle", "download", "fillStyle", "4999610LAkcVL", "exportPaintObjects", "about:blank", "2OnOJTV", "2484072VjfKWf", "6135036yVGJGD"];
  return (Uo = function() {
    return s;
  })();
}
function Zt(s, t) {
  const e = Uo();
  return (Zt = function(n, r) {
    return e[n -= 293];
  })(s, t);
}
(function() {
  const s = Zt, t = Uo();
  for (; ; )
    try {
      if (-parseInt(s(320)) / 1 * (-parseInt(s(308)) / 2) + -parseInt(s(299)) / 3 * (parseInt(s(301)) / 4) + -parseInt(s(323)) / 5 + parseInt(s(322)) / 6 * (parseInt(s(294)) / 7) + parseInt(s(295)) / 8 + parseInt(s(321)) / 9 + -parseInt(s(317)) / 10 === 513268)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Ml {
  constructor(t) {
    this.stage = t, this.render = new Oh(t);
  }
  toDataURL(t) {
    const e = Zt;
    let n = Array.isArray(t) ? t : [t];
    return n[e(310)] > 0 && this[e(312)](n), this[e(313)].toDataURL();
  }
  toImage(t) {
    let e = this[Zt(293)](t), n = new Image();
    return n.src = e, n;
  }
  saveAsLocalImage(t, e) {
    const n = Zt;
    let r = this.toDataURL(t);
    e == null && (e = "jtopo_" + (/* @__PURE__ */ new Date())[n(300)]() + ".png"), this.saveDataAsFile(r, e);
  }
  saveImageInfo(t) {
    const e = Zt;
    let n = this[e(293)](t);
    window[e(307)](e(319)).document.write("<img src='" + n + e(297));
  }
  download(t, e) {
    (function(n) {
      const r = Zt, i = document.createElement("a"), o = URL.createObjectURL(n);
      i.href = o, i.download = n[r(296)], document.body.appendChild(i), i.click(), document.body.removeChild(i), URL.revokeObjectURL(o);
    })(new File([e], t, { type: "text/json" }));
  }
  _exportPaint(t) {
    const e = Zt;
    let n = this.render, r = t.map((c) => {
      const u = Zt;
      if (c instanceof ut) {
        let f = c._getExportAABB();
        return c.stage.camera[u(311)](f);
      }
      return c._obb.aabb;
    }), i = O[e(298)](r), o = Math.max(1, i.width), a = Math.max(1, i.height);
    n.setSize(o, a);
    const h = n.context;
    h[e(303)](), h.translate(-i.x, -i.y);
    const l = this[e(304)][e(306)].currentTheme[e(314)]("DefaultConfig");
    h.fillStyle = l[e(316)], h[e(305)] = l[e(305)], n[e(318)](t, this.stage[e(306)]), h.restore();
  }
  saveDataAsFile(t, e) {
    const n = Zt;
    let r = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
    r.href = t, r[n(315)] = e;
    let i = document.createEvent(n(309));
    i[n(302)]("click", !0, !1, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), r.dispatchEvent(i);
  }
  _getStageExportAABB() {
    const t = Zt;
    let e = this.stage, n = e.getAllVisibleLayers().map((r) => e.camera[t(311)](r._getExportAABB()));
    return O[t(298)](n);
  }
}
const Ft = Vo;
function Jo() {
  const s = ["pointerupHandler", "pointerDownX", "10970980dEhcHX", "draw", "697quKlRO", "visible", "translateWith", "fillStyle", "1279284rmXyKA", "7ryMdTR", "12996945kVdrAU", "_pickUp", "context", "3277060ahsxxk", "pointerDownY", "764876CrBvQh", "showAreaBox", "save", "areaBox", "5196184wkjTYa", "children", "globalAlpha", "2072YebzsJ", "_setRender", "restore", "renderLayer", "currentTheme", "defineProperty", "stage", "6vUeqRU", "displayList"];
  return (Jo = function() {
    return s;
  })();
}
(function() {
  const s = Vo, t = Jo();
  for (; ; )
    try {
      if (parseInt(s(387)) / 1 * (-parseInt(s(405)) / 2) + parseInt(s(381)) / 3 * (-parseInt(s(398)) / 4) + parseInt(s(396)) / 5 + -parseInt(s(391)) / 6 * (-parseInt(s(392)) / 7) + parseInt(s(402)) / 8 + parseInt(s(393)) / 9 + -parseInt(s(385)) / 10 === 760626)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var zl = Object[Ft(379)], Bl = Object.getOwnPropertyDescriptor;
const jl = ve.gc, Ga = dt.w;
function Vo(s, t) {
  const e = Jo();
  return (Vo = function(n, r) {
    return e[n -= 378];
  })(s, t);
}
class Wl extends vh {
  constructor() {
    super();
  }
  [Ft(408)](t) {
    const e = Ft, n = t[e(380)];
    this.clear();
    let r = this[e(395)];
    if (window.devicePixelRatio && window.devicePixelRatio != 1) {
      const i = window.devicePixelRatio;
      this[e(395)].scale(i, i);
    }
    return r.save(), t[e(386)](r), t.displayList.forEach((i) => i.painted = !0), this._paintFlattenObjects(t[e(382)], n.styleSystem), r.restore(), t;
  }
}
class or extends ut {
  constructor(t) {
    const e = Ft;
    super(), this._zIndex = Fs.HandlerLayerCanvas, this.cuttingHide = !1, this._axis = new wh(), this.stage = t, this.areaBox = new C(), this.areaBox.name = e(401), this[e(401)].pointerEnabled = !1, this._axis[e(388)] = !1, this[e(406)](new Wl()), this.areaBox.setStyles(Zn.getStyle("SelectArea"));
  }
  [Ft(394)](t, e) {
    const n = Ft;
    return t == null && (t = this.stage.inputSystem.x), e == null && (e = this[n(380)].inputSystem.y), super._pickUp(t, e);
  }
  [Ft(399)]() {
    const t = Ft, e = this[t(380)].inputSystem, n = this.areaBox;
    n.parent == null && this.addChild(n);
    let r = this.stage.styleSystem[t(378)];
    n.setStyles(r.getStyle("SelectArea"));
    let i = e[t(384)], o = e[t(397)], a = e.x, h = e.y, l = Math.abs(i - a), c = Math.abs(o - h), u = Math.min(i, a), f = Math.min(o, h);
    return n.resize(l, c), n.translate(u, f), n[t(389)](0.5 * l, 0.5 * c), new O(u, f, n.width, n.height);
  }
  pointeroutHandler(t) {
    this.pointerupHandler();
  }
  [Ft(383)]() {
    this[Ft(401)].removeFromParent();
  }
  update() {
    return this[Ft(403)].length != 0 && (this._requestReapint = !0, !0);
  }
  draw(t) {
    const e = Ft;
    if (Ga == null)
      return;
    t[e(400)](), t[e(404)] = 0.6, t.font = "bold 16px arial";
    let n = jl(Ga);
    t[e(390)] = "white", t.fillText(n, 16, this.render.getHeight() - 16), t[e(407)]();
  }
}
function Go(s, t) {
  const e = qo();
  return (Go = function(n, r) {
    return e[n -= 204];
  })(s, t);
}
((s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? Bl(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  n && i && zl(t, e, i);
})([p("HandlerLayer")], or.prototype, "className", 2);
const ln = Go;
function qo() {
  const s = ["3952XiKPSJ", "_flattenList", "viewPortCut", "_needPaint", "afterRender", "now", "mode", "clearDirty", "update", "647022fnmtzS", "_matrixDirty", "requestTimer", "displayList", "length", "819038hzwmaX", "_cameraDirty", "outLinks", "2149238GyHmRn", "getAllVisibleLayers", "_tickLayer", "renderLayerBefore", "准备数据", "camera", "aabb", "1022295wwsrci", "updateMatrix", "1399705fmcejY", "animationSystem", "destroyed", "3abbJBT", "2493khXHWl", "painted", "localView", "isLink", "styleSystem", "start", "style", "inLinks", "_updateMatrix", "363808fhozdz", "beforeRender"];
  return (qo = function() {
    return s;
  })();
}
(function() {
  const s = Go, t = qo();
  for (; ; )
    try {
      if (parseInt(s(236)) / 1 + -parseInt(s(224)) / 2 + -parseInt(s(239)) / 3 * (-parseInt(s(208)) / 4) + -parseInt(s(234)) / 5 + parseInt(s(219)) / 6 + -parseInt(s(227)) / 7 + parseInt(s(210)) / 8 * (parseInt(s(240)) / 9) === 814320)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class Rl {
  constructor(t) {
    this.timeline = { currentTime: Date.now() }, this.stage = t;
  }
  [ln(204)]() {
    const t = ln, e = this.stage, n = this, r = e.handlerLayer, i = this.timeline, o = e.animationSystem;
    {
      let h = e[t(237)].timeline.begin;
      this.timeline.currentTime >= h && (e[t(232)].localView.mode = "painted");
    }
    const a = e[t(232)][t(242)][t(216)] == t(241);
    (function h() {
      const l = t;
      if (e[l(238)])
        return;
      let c = Date[l(215)]();
      i.currentTime = c, !a && o.tick(c);
      let u = e.camera;
      u._cameraDirty && (u[l(207)](), e[l(218)]()), n._tickLayer(r, c);
      const f = e[l(228)]();
      for (let g = 0; g < f[l(223)]; g++) {
        let y = f[g];
        e._showAxis && (y._axis.visible = g == 0), u[l(225)] && y._calcBackgroundPosition(), n[l(229)](y, c);
      }
      u[l(217)](), n[l(221)] = requestAnimationFrame(h);
    })();
  }
  [ln(230)](t, e) {
    const n = ln, r = this.stage[n(244)];
    for (let h = 0; h < t.displayList.length; h++) {
      let l = t[n(222)][h];
      l[n(209)] && l.beforeRender();
    }
    if (!(e || t instanceof or))
      return void t[n(205)].dirty;
    const i = this.stage[n(232)];
    let o = t[n(211)];
    t.displayList.length = 0;
    let a = !1;
    for (let h = 0; h < o.length; h++) {
      let l = o[h];
      l.style.dirty && (r.computeStyle(l), l[n(205)].dirty = !1), !l[n(220)] || !l.isNode || l.parent instanceof j ? !a && l.isLink && (l[n(206)].length > 0 || l[n(226)].length > 0) && (a = !0) : (l[n(235)](), l._clearMatrixDirtyMark());
    }
    if (a)
      for (let h = 0; h < o[n(223)]; h++) {
        let l = o[h];
        l[n(243)] && (l.inLinks.length > 0 || l.outLinks.length > 0) && l.updateMatrix();
      }
    for (let h = 0; h < o[n(223)]; h++) {
      let l = o[h];
      l._matrixDirty && (l.updateMatrix(), l._clearMatrixDirtyMark()), l[n(241)] = !1;
      let c = l._state;
      c._isOutOfViewport = this[n(212)](l, t), c._needPaint = l.visible && l.parent._state._needPaint, c[n(213)] && !c._isOutOfViewport && i.canSee(l) && t.displayList.push(l);
    }
    t._displayListDirty = !1;
  }
  viewPortCut(t, e) {
    const n = ln;
    if (e.cuttingHide == 0)
      return !1;
    let r = e.stage[n(232)].viewportRect, i = t._obb;
    return i.aabb != null && !r.isIntersectRect(i[n(233)]);
  }
  _tickLayer(t, e) {
    const n = ln;
    let r = t.render;
    t._prepareRenderData();
    const i = t._needUpdateDisplayList;
    if (t._frames != 0) {
      t[n(209)] && t.beforeRender(), this.renderLayerBefore(t, i), t._matrixDirty = !1, r.renderLayer(t);
      for (let o = 0; o < t.displayList.length; o++) {
        let a = t.displayList[o];
        a.afterRender && a.afterRender();
      }
      t[n(214)] && t.afterRender(), t._renderTimes++;
    } else if (t._requestReapint == 1 || i) {
      t._requestReapint = !1, t.beforeRender && t.beforeRender(), this.renderLayerBefore(t, i), r.renderLayer(t), t._matrixDirty = !1;
      for (let o = 0; o < t.displayList[n(223)]; o++) {
        let a = t.displayList[o];
        a.afterRender && a[n(214)]();
      }
      t[n(214)] && t.afterRender(), t._renderTimes++;
    }
  }
  pause() {
    cancelAnimationFrame(this.requestTimer);
  }
}
const Ie = Qo;
function Ko() {
  const s = ["35658RtmtDF", "1184eQRqJi", "dragHandler", "205iwUriy", "unselectedHandler", "draggable", "getTopObjects", "2062149cEWcyp", "objects", "2SKrzrD", "323027CAXnHJ", "11zWggZH", "dragstart", "event", "8078448EMLPMd", "240DMCTOZ", "1973752LryzFY", "length", "defaultPrevented", "36421VfoKqu", "includes", "dispatchEvent", "push", "3390BixVTd"];
  return (Ko = function() {
    return s;
  })();
}
function Qo(s, t) {
  const e = Ko();
  return (Qo = function(n, r) {
    return e[n -= 399];
  })(s, t);
}
(function() {
  const s = Qo, t = Ko();
  for (; ; )
    try {
      if (parseInt(s(413)) / 1 + -parseInt(s(412)) / 2 * (-parseInt(s(410)) / 3) + -parseInt(s(419)) / 4 + -parseInt(s(406)) / 5 * (-parseInt(s(402)) / 6) + -parseInt(s(422)) / 7 * (-parseInt(s(404)) / 8) + -parseInt(s(403)) / 9 * (parseInt(s(418)) / 10) + parseInt(s(414)) / 11 * (-parseInt(s(417)) / 12) === 541889)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
let qa = new DragEvent(Ie(415)), Fl = new DragEvent("dragend");
class Th extends _e {
  constructor() {
    super(), this.objects = [], this.isDraging = !1;
  }
  addEventListener(t, e) {
    return super.addEventListener(t, e);
  }
  hasListener(t) {
    return super.hasListener(t);
  }
  isEmpty() {
    return this.objects.length == 0;
  }
  pointeroutHandler(t) {
    const e = Ie;
    this.isDraging = !1, this.isEmpty() || t.isPointerDown && this[e(400)](qa);
  }
  dragHandler(t) {
    const e = Ie;
    if (this[e(400)](Fl), t.event instanceof MouseEvent && t[e(416)][e(421)] == 1)
      return;
    let n = this[e(409)]();
    for (let r = 0; r < n[e(420)]; r++) {
      let i = n[r];
      i[e(408)] && i[e(405)](t);
    }
  }
  dragEndHandler(t) {
    const e = Ie;
    this[e(400)](qa);
    let n = this[e(409)]();
    for (let r = 0; r < n.length; r++) {
      let i = n[r];
      i.draggable && i.dragEndHandler(t);
    }
  }
  getTopObjects() {
    let t = this.objects, e = lt.flatten(t);
    return e = lt.flatten(t, (n) => !e.includes(n.parent)), e;
  }
  addAll(t) {
    const e = Ie;
    for (let n = 0; n < t[e(420)]; n++) {
      let r = t[n];
      this.objects.includes(r) || (r.selectedHandler && r.selectedHandler(), this.objects.push(r));
    }
    return this;
  }
  add(t) {
    const e = Ie;
    return this[e(411)].includes(t) || (t.selectedHandler.call(t), this[e(411)][e(401)](t)), this;
  }
  remove(t) {
    return t[Ie(407)] && t.unselectedHandler(), At.remove(this.objects, t), this;
  }
  removeAll() {
    let t = this.objects;
    for (let e = 0; e < t.length; e++) {
      let n = t[e];
      n.unselectedHandler && n.unselectedHandler();
    }
    return this.objects.length = 0, this;
  }
  has(t) {
    const e = Ie;
    return this[e(411)][e(399)](t);
  }
  reset() {
    const t = Ie;
    this.isDraging = !1, this.objects[t(420)] = 0;
  }
}
function Zo() {
  const s = ["hasChildren", "3MnmQym", "selectedGroup", "zoomBy", "_touchWheel", "filter", "_matrixDirty", "7921680cAVyXm", "type", "editor", "7mKRKpT", "pointerdown", "ctrlKey", "65068032YepbZt", "addAll", "inputSystem", "269387SPxLsx", "mode", "1667544qtKRcN", "71245WDMzlW", "_TouchZoomHandler", "318DOKWeh", "target", "call", "11jnsqDA", "view", "drag", "toWorldXY", "6183456ESjTLb", "12865329rYuSaz", "clientY", "scale", "camera", "_pickUpByRect", "2mRaPSv"];
  return (Zo = function() {
    return s;
  })();
}
(function() {
  const s = Ue, t = Zo();
  for (; ; )
    try {
      if (parseInt(s(230)) / 1 * (-parseInt(s(248)) / 2) + -parseInt(s(250)) / 3 * (parseInt(s(242)) / 4) + -parseInt(s(233)) / 5 * (parseInt(s(235)) / 6) + -parseInt(s(259)) / 7 * (-parseInt(s(232)) / 8) + -parseInt(s(243)) / 9 + -parseInt(s(256)) / 10 + parseInt(s(238)) / 11 * (parseInt(s(227)) / 12) === 838682)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
class _r {
  static _initInputSystem(t) {
    const e = Ue, n = t.inputSystem;
    n._worldPosConverter = () => {
      const r = Ue;
      let i = t.camera[r(241)](n.x, n.y);
      n.xInWorld = i.x, n.yInWorld = i.y, n.dxInWorld = n.dx / t.camera.scale, n.dyInWorld = n.dy / t[r(246)].scale;
    }, n._touchWheel[e(234)] = (r, i, o) => {
      const a = e, h = r.touches[0], l = r.touches[1], c = o.getBoundingClientRect(), u = c.left, f = c.top;
      let g = t.camera[a(241)](0.5 * (l.clientX - u + (h.clientX - u)), 0.5 * (l[a(244)] - f + (h[a(244)] - f)));
      t[a(246)][a(252)](i, g.x, g.y);
    }, n[e(253)]._TouchDragHandler = (r, i) => {
      const o = e;
      t.camera._dragWith(r / t[o(246)][o(245)], i / t.camera[o(245)]);
    }, function(r) {
      const i = Ue, o = r.inputSystem;
      o.eventObservable[i(254)]((a) => {
        const h = i;
        if (r.mode == Ht[h(239)] || r[h(246)].localView.mode == "painted")
          return !1;
        if (r.mode == Ht[h(240)])
          return !0;
        if (o.preMouseoverTarget = o.mouseoverTarget, o.mouseoverTarget = null, a[h(257)] == h(260)) {
          if (r.handlerLayer._pickUp() == null) {
            let l = r._pickUpViewLayers();
            l == null ? (o.target != null && o[h(236)].unselectedHandler(), o[h(236)] = null) : o._setTarget(l);
          }
          return !0;
        }
        if (a[h(257)] == "pointermove" && a.buttons <= 0) {
          let l = r._pickUpViewLayers();
          o.mouseoverTarget = l;
        }
        return !0;
      }).filter((a) => {
        const h = i;
        let l = a.type;
        if (r[h(231)] == Ht.edit && r.editor != null) {
          let c = l + "Handler";
          if (r[h(258)][c] && (r.editor[c](a), a.defaultPrevented))
            return !1;
        }
        return !0;
      }).subscribe((a) => {
        let h = a.type + "Handler";
        r[h] && r[h](a), r.overview && (r.overview.dirty = !0);
      });
    }(t);
  }
  static areaSelectHandle(t, e) {
    const n = Ue;
    let r = t.stage, i = t.showAreaBox(), o = t.stage.viewLayers;
    for (let a = 0; a < o.length; a++) {
      let h = o[a];
      if (!h[n(249)]())
        continue;
      let l = r.camera.toWorldRect(i), c = h[n(247)](l);
      r[n(251)][n(228)](c), c.length > 0 && h.update();
    }
  }
  static pickObject(t, e) {
    const n = Ue, r = t[n(229)];
    let i = r.event || { type: "pointerdown", ctrlKey: !1, metaKey: !1 };
    if (e == null)
      return;
    e[n(255)] = !0, r[n(257)] == "pointerdown" && e.pointerdownHandler[n(237)](e, r);
    const o = i[n(261)] || i.metaKey;
    t.selectedGroup.has(e) ? o && t[n(251)].remove(e) : (!o && t.selectedGroup.removeAll(), t.selectedGroup.add(e));
  }
}
function Ue(s, t) {
  const e = Zo();
  return (Ue = function(n, r) {
    return e[n -= 227];
  })(s, t);
}
const S = _n;
function $o() {
  const s = ["camera", "markDirty", "_updateOverview", "fullWindow", "1414738wBuZvA", "type", "exportSystem", "createElement", "layersContainer", "removeEventListener", "visible", "canvas", "removeAll", "map", "forEach", "default", "containsRect", "length", "dropTarget", "animationSystem", "render", "getAABB", "zoomBy", "flex", "draggable", "deltaY", "previous", "target", "observe", "domElement", "update", "then", "drag", "pointerEnabled", "width", "21036MdOgGH", "layer_container", "getCursor", "Stage", "addLayer", "mode", "44813065eMtGLj", "showAxis", "catch", "filter", "getRect", "version", "selectedGroup", "resourceSystem", "now", "editor", "hasListener", "edit", "removeAt", "uiContainer", "src", "setCursor", "dropHandler", "pointermoveHandler", "fullscreen", "viewLayers", "position:absolute;width:100%;-webkit-user-select:none;", "9549894OUazOI", "144DJMQkR", "mouseoverHandler", "grabbing", "fullwindow", "offsetHeight", "findDropToObjec", "renderSystem", "height", "cancelAll", "10482600BnxJHV", "removeLayer", "ui_container", "autoAdjustChildrenSize", "yInWorld", "innerHTML", "updateZIndex", "pointerupHandler", "_getAncestors", "contextmenu", "zIndex", "7DIdYwZ", "dispatchEvent", "areaBox", "layoutSystem", "zoomInFactor", "debugPanel", "config", "721730RlrPRr", "destroy", "reset", "8xXgivj", "handlerLayer", "setAttribute", "zoom", "hide", "_initInputSystem", "indexOf", "offsetWidth", "column", "add", "Stage has been destroyed already.", "resize", "clickHandler", "overview", "appendChild", "getElementById", "_dragHandler", "wheelHandler", "dragEndHandler", "addEventListener", "sort", "_obb", "areaSelectHandle", "setStyles", "style", "SerializeType", "_reloadTest", "push", "226IGBqzt", "935635MLFLwA", "clientHeight", "inputSystem", "zoomOutFactor", "dropAllowed", "pointerenterHandler", "defaultPrevented", "localView", "touchsCount"];
  return ($o = function() {
    return s;
  })();
}
function _n(s, t) {
  const e = $o();
  return (_n = function(n, r) {
    return e[n -= 330];
  })(s, t);
}
(function() {
  const s = _n, t = $o();
  for (; ; )
    try {
      if (-parseInt(s(333)) / 1 + parseInt(s(450)) / 2 * (-parseInt(s(364)) / 3) + parseInt(s(422)) / 4 * (parseInt(s(451)) / 5) + parseInt(s(391)) / 6 * (-parseInt(s(412)) / 7) + parseInt(s(401)) / 8 + -parseInt(s(392)) / 9 * (parseInt(s(419)) / 10) + parseInt(s(370)) / 11 === 804983)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})(), Date[S(378)]();
class Yn extends $e {
  constructor(t, e) {
    super(t, e);
  }
}
class ar extends _e {
  constructor(t, e) {
    const n = S;
    super(), this[n(375)] = Rs, this.viewLayers = [], this.enableContextmenu = !1, this.mode = "normal", this.destroyed = !1, this._showAxis = !1, this.rect = new O(0, 0, 1, 1), this.config = { dropAllowed: !0, autoResize: !0 }, e != null && Object.assign(this[n(418)], e), this[n(460)] = new Ph(this), this[n(423)] = new or(this), this.inputSystem = new xh(this.handlerLayer[n(349)][n(340)]), _r[n(427)](this), this.keyboard = new bh(), this[n(376)] = new Th(), this.resourceSystem = dt, this._init(t), this.styleSystem = new kh(this), this.animationSystem = new rl(), this.effectSystem = new ml(this, this[n(348)]), this.graphSystem = new Tn(), this[n(415)] = new Sh(this[n(348)], this.graphSystem), this.renderSystem = new Rl(this), this.exportSystem = new Ml(this), this.serializerSystem = new Ns(this);
    const r = this;
    this.resourceSystem.addEventListener("loaded", (i) => {
      r[n(359)]();
    }), this[n(460)]._updateMatrix(), this.styleSystem.start(), this[n(398)].start();
  }
  [S(374)]() {
    const t = S;
    return this.rect[t(363)] = this[t(363)], this.rect.height = this.height, this.rect;
  }
  _init(t) {
    const e = S;
    let n = this;
    document.addEventListener(e(410), function(o) {
      n[e(453)].isPointerOn && o.preventDefault();
    }), n.domElement = function(o) {
      const a = S;
      if (typeof o == "string" && (o = document[a(437)](o)) == null)
        throw new Error("element is not found id:" + o);
      if (o == null)
        throw new Error("the dom element is null.");
      return Object.assign(o.style, { display: a(352), position: "relative", flexDirection: a(430) }), o;
    }(t);
    const r = document.createElement("div");
    r.classList.add(e(365)), r[e(424)](e(446), "position:relative;flex:1;width:100%;-webkit-user-select:none;"), n.layersContainer = r, n.domElement.appendChild(r), n.width = r[e(429)], n.height = r[e(452)];
    const i = document[e(336)]("div");
    i.classList[e(431)](e(403)), i.setAttribute("style", e(390)), n[e(383)] = i, n[e(358)].appendChild(i);
    {
      const o = this.handlerLayer.render[e(340)];
      o.style.zIndex = "" + this[e(423)][e(411)], this.layersContainer[e(436)](o);
    }
    this[e(404)](), n.debugPanel = new Il(n);
  }
  [S(404)]() {
    const t = S;
    let e = this;
    const n = e.layersContainer;
    if (window.ResizeObserver) {
      const i = new ResizeObserver((o) => {
        e.config.autoResize && ve.delayRun(n, function() {
          const a = _n;
          e.resize(n.clientWidth, n[a(452)]);
        }, 30);
      });
      return i[t(357)](n), void (e._resizeObserver = i);
    }
    let r = setInterval(function() {
      const i = t;
      if (!e.config.autoResize)
        return;
      let o = n[i(429)], a = n[i(396)];
      (e.width != o || e.height != a) && e.resize(o, a);
    }, 500);
    e._resizeTimer = r;
  }
  [S(433)](t, e) {
    const n = S, r = this;
    r.width = t, r.height = e, r.halfWidth = 0.5 * t, r.halfHeight = 0.5 * e, r.handlerLayer._updateRenderSize(t, e), r[n(389)].forEach(function(o) {
      o._updateRenderSize(t, e);
    }), r.camera[n(330)]();
    let i = new Yn("resize");
    r.dispatchEvent(i);
  }
  showDebugPanel() {
    this.debugPanel.show();
  }
  hideDebugPanel() {
    const t = S;
    this[t(417)][t(426)]();
  }
  showOverview(t) {
    const e = S;
    let n = this;
    n[e(435)] == null && (n.overview = new Nl(n)), n[e(435)][e(445)](t), n.overview.show();
  }
  [S(331)]() {
    this.overview != null && this.overview.update();
  }
  hideOverview() {
    const t = S;
    this[t(435)] != null && this[t(435)].hide();
  }
  addLayer(t) {
    const e = S;
    if (this.viewLayers.length >= K.MaxLayerCount)
      throw new Error("out of max layer count");
    t.resize(this[e(363)], this[e(399)]), this[e(389)].push(t);
    const n = t.render[e(340)];
    this[e(337)].appendChild(n), this.updateZIndex(), t._onMound(this);
  }
  [S(407)]() {
    const t = S, e = this.viewLayers;
    if (e[t(346)] === 0 || (e[t(442)](function(r, i) {
      const o = t;
      return r[o(411)] - i[o(411)];
    }), e.length <= 1))
      return;
    const n = this.layersContainer;
    e[t(343)]((r) => {
      const i = t;
      r[i(349)].canvas[i(446)].zIndex = "" + r[i(411)];
    }), e.map((r) => {
      const i = t;
      return r.canvas.remove(), r[i(340)];
    }).forEach((r) => {
      n.appendChild(r);
    });
  }
  removeLayer(t) {
    const e = S;
    t[e(349)].canvas.remove();
    let n = this.viewLayers[e(428)](t);
    return n == -1 || (At[e(382)](this[e(389)], n), t.stage = null), this;
  }
  removeChild(t) {
    return this[S(402)](t);
  }
  show() {
    const t = S;
    return this.camera.markDirty(), this.viewLayers.forEach(function(e) {
      e.show();
    }), this[t(377)].whenAllLoaded();
  }
  [S(426)]() {
    this.viewLayers.forEach(function(t) {
      t[_n(426)]();
    });
  }
  update() {
    const t = S;
    this.editor && this[t(379)].update(), this.handlerLayer.update(), this.viewLayers.forEach(function(e) {
      e.update();
    });
  }
  _forceUpdate() {
    this.handlerLayer._forceUpdate(), this.viewLayers.forEach(function(t) {
      t._forceUpdate();
    });
  }
  toDataURL() {
    const t = S;
    return this.exportSystem.toDataURL(this[t(389)]);
  }
  saveImageInfo() {
    const t = S;
    return this[t(335)].saveImageInfo(this[t(389)]);
  }
  saveAsLocalImage() {
    this.exportSystem.saveAsLocalImage(this.viewLayers);
  }
  addEventListener(t, e) {
    return super[S(441)](t, e);
  }
  [S(338)](t, e) {
    return super.removeEventListener(t, e);
  }
  hasListener(t) {
    return super.hasListener(t);
  }
  [S(332)]() {
    const t = S;
    if (this[t(380)](t(395))) {
      let e = new Yn(t(395), { cancelable: !0 });
      if (this.dispatchEvent(e), e.defaultPrevented == 1)
        return;
    }
    ze.fullWindow(this.domElement);
  }
  fullScreen() {
    const t = S;
    if (this.hasListener("fullscreen")) {
      let e = new Yn(t(388), { cancelable: !0 });
      this[t(413)](e);
    }
    ze.fullScreen(this[t(358)]);
  }
  setMode(t) {
    const e = S;
    if (this[e(380)]("modechange")) {
      let n = new Yn("modechange", { cancelable: !0, mode: t });
      if (this.dispatchEvent(n), n[e(457)] == 1)
        return;
    }
    this[e(369)] = t, t == Ht.drag ? this.setCursor(at.grab) : this.setCursor(at.default);
  }
  [S(386)](t) {
  }
  dragoverHandler() {
  }
  [S(393)]() {
  }
  pointerdownHandler(t) {
    const e = S;
    if (this[e(453)], this[e(369)] == Ht[e(361)])
      return void this.setCursor(at.grabbing);
    let n = this[e(453)].target;
    if (n != null)
      return void _r.pickObject(this, n);
    !(t.ctrlKey || t.metaKey) && this.selectedGroup[e(341)]();
  }
  static [S(397)](t, e) {
    const n = S;
    let r = ps[n(409)](t), i = lt.flatten(t.children);
    for (let o = e[n(346)] - 1; o >= 0; o--) {
      let a = e[o];
      if (t !== a && a !== t.parent && a.dropAllowed && r.indexOf(a) == -1 && i.indexOf(a) == -1 && a[n(443)].aabb[n(345)](t._obb.aabb))
        return a;
    }
    return null;
  }
  _dragHandler(t) {
    const e = S, n = this[e(369)];
    if (n == Ht.paint)
      return;
    const r = this[e(453)], i = this.handlerLayer, o = this.inputSystem.target, a = this.selectedGroup, h = t.buttons == 1, l = h && o != null && o.pointerEnabled && o[e(353)], c = this.viewLayers.filter((u) => u[e(362)]);
    if (h && this.config.dropAllowed && l && o[e(353)]) {
      let u = null;
      for (let f = 0; f < c.length; f++) {
        const g = c[f].displayList.filter((y) => y.isNode);
        u = ar.findDropToObjec(o, g), u !== r.dropTarget && r.dropTarget && r.dropTarget.dragoutHandler(r), u != null && u.dragoverHandler(this.inputSystem);
      }
      r[e(347)] = u;
    }
    if (l && this.mode !== Ht.drag)
      return void a.dragHandler(r);
    !h || n != Ht.select && n != Ht[e(381)] ? (this[e(385)](at[e(394)]), this[e(460)]._dragWith(r.dxInWorld, r.dyInWorld)) : _r[e(444)](i, r);
  }
  [S(408)](t) {
    const e = S, n = this.inputSystem, r = this.viewLayers, i = n.isRightButton;
    this.handlerLayer[e(408)]();
    for (let a = 0; a < r.length; a++) {
      const h = r[a];
      h.draggable && n.isDraging && h[e(440)](n);
    }
    if (this.mode == Ht.drag)
      return void this[e(385)](at.grab);
    this.setCursor(e(344));
    let o = this.inputSystem.target;
    o && o.pointerEnabled && (o[e(408)](n), n.previous.isDraging && o[e(353)] && i == 0 && this.selectedGroup[e(440)](n)), this.config[e(455)] && n[e(347)] && (n.dropTarget[e(386)](n), n.dropTarget = null);
  }
  pointeroutHandler(t) {
    const e = this.inputSystem;
    this.handlerLayer.pointeroutHandler(e), this.selectedGroup.pointeroutHandler(e);
  }
  clickHandler(t) {
    const e = S, n = this.inputSystem;
    let r = n.target;
    r && !n[e(355)].isDragEnd && r[e(434)](n);
  }
  dblclickHandler(t) {
    const e = S, n = this[e(453)];
    let r = n[e(356)];
    r && !n.previous.isDragEnd && r.dblclickHandler(n);
  }
  [S(387)](t) {
    const e = S, n = this[e(453)];
    if (this.getCurrentLayer() == null)
      return;
    if (n._touchWheel[e(459)] > 1)
      return void (this.handlerLayer.areaBox.ownerLayer && this[e(423)][e(414)].removeFromParent());
    if (n.isDraging)
      return this[e(438)](t);
    if (this[e(369)] == Ht.drag)
      return void this.setCursor(at.grab);
    if (n.skipPointerMovePicking)
      return;
    let r = n.preMouseoverTarget, i = n.mouseoverTarget;
    r !== i && r != null && r.pointeroutHandler && r.pointeroutHandler(n), i != null && (r !== i ? i.pointerenterHandler && i.pointerenterHandler(n) : (i.title != null && (this.handlerLayer.render.canvas.title = i.title), i.pointermoveHandler(n)));
  }
  [S(439)](t) {
    const e = S;
    if (this.getCurrentLayer() == null || this.camera.enableWheelZoom == 0)
      return;
    let n = this.inputSystem.xInWorld, r = this[e(453)][e(405)];
    t[e(354)] < 0 ? this.camera.zoomBy(this.camera[e(416)], n, r) : this[e(460)][e(351)](this[e(460)][e(454)], n, r);
  }
  [S(456)](t) {
  }
  _pickUpViewLayers() {
    const t = S;
    let e = this.viewLayers, n = this[t(460)];
    for (let r = e[t(346)] - 1; r >= 0; r--) {
      let i = e[r];
      if (!i[t(339)] || !i.pointerEnabled)
        continue;
      let o = i._pickUp();
      if (o != null && o !== n[t(458)].object)
        return o;
    }
    return null;
  }
  getCursor() {
    const t = S;
    return this.handlerLayer.render[t(366)]();
  }
  [S(385)](t) {
    return this.handlerLayer.render.setCursor(t);
  }
  download(t, e) {
    return this.exportSystem.download(t, e);
  }
  select(t) {
    this[S(376)].removeAll(), this.selectedGroup.addAll(t);
  }
  getCurrentLayer() {
    const t = S;
    let e = this.viewLayers.filter((n) => n.visible);
    return e.length == 0 ? null : e[e[t(346)] - 1];
  }
  getAABB() {
    const t = S;
    if (this[t(389)].length == 0)
      return new O(0, 0, this.width, this.height);
    let e = this.viewLayers.map((n) => this.camera.toScreenRect(n[t(350)]()));
    return O.unionRects(e);
  }
  getAllVisibleLayers() {
    const t = S;
    return this.viewLayers[t(373)]((e) => e.visible);
  }
  getCenter() {
    return { x: 0.5 * this.width, y: 0.5 * this.height };
  }
  setCamera(t) {
    this.camera = t;
  }
  toJSON() {
    return Ms(this, this[S(389)].filter((t) => t.serializeable), null, "Stage");
  }
  toJSONWithBase64() {
    const t = S;
    let e = Ms(this, this.viewLayers[t(373)]((o) => o.serializeable), null, t(367)), n = e.Resources || [], r = [], i = [];
    return n.filter((o) => o.type == "img")[t(342)]((o, a) => {
      const h = t;
      r.push(o.src), i[h(449)](a);
    }), new Promise((o, a) => {
      Qn.batchLoadAndConvertImages(r).then((h) => {
        const l = _n;
        for (let c = 0; c < h[l(346)]; c++)
          n[i[c]].src = h[c];
        o(e);
      }).catch(a);
    });
  }
  fromJSON(t, e) {
    const n = S;
    if (t.Roots[n(346)] > 1 && t[n(447)] != "Stage")
      throw new Error("SerializeType is not Stage");
    this.reset();
    const r = this;
    function i() {
      const a = n;
      let h = Ss(r, t, e);
      for (let l = 0; l < h.length; l++) {
        let c = h[l];
        r[a(368)](c);
      }
      r.styleSystem[a(330)](), r._forceUpdate(), r[a(460)][a(425)](1), r[a(460)].lookAt(0, 0), r[a(460)].lookAtContentCenter(), r.camera[a(458)].quit(), setTimeout(() => {
        const l = a;
        r.styleSystem[l(330)]();
      }, 20);
    }
    let o = (t.Resources || []).filter((a) => a[n(334)] == "img").map((a) => a[n(384)]);
    return new Promise((a, h) => {
      const l = n;
      if (o.length == 0)
        return i(), void a(!0);
      dt.whenAllImagesLoaded(o)[l(360)](() => {
        i(), a(!0);
      })[l(372)]((c) => {
        h(c);
      });
    });
  }
  [S(371)]() {
    return this._showAxis = !0, this;
  }
  hideAxis() {
    return this._showAxis = !1, this;
  }
  [S(448)]() {
    const t = S;
    return this.toJSONWithBase64()[t(360)]((e) => this.fromJSON(e));
  }
  [S(421)]() {
    const t = S;
    this.styleSystem.clear(), this.animationSystem[t(400)]();
    let e = this[t(389)].slice();
    for (let n of e)
      this.removeLayer(n);
    this[t(460)].reset(), this[t(453)].reset(), this.selectedGroup.reset();
  }
  [S(420)](t) {
    const e = S;
    if (this.destroyed)
      throw new Error(e(432));
    this.destroyed = !0, this.reset(), this._resizeObserver && this._resizeObserver.disconnect(), this._resizeTimer && clearInterval(this._resizeTimer), this.handlerLayer.destroy(), this.viewLayers.forEach((n) => {
      n.destroy();
    }), this.domElement[e(406)] = "", t != 0 && dt.clearCache();
  }
}
function ta() {
  var s = ["5mVzCvL", "5177792LNPigh", "2868osNEzI", "sin", "length", "794387HtMMTI", "146982oCshvR", "className", "getShape", "3457320gCmTtc", "2ihEEcE", "height", "11429240pHfMDC", "max", "984lDxANc", "radius", "9KoLNhI", "65149Mfqgfs", "width", "4739984wcpcpD"];
  return (ta = function() {
    return s;
  })();
}
var $n = En;
(function() {
  for (var s = En, t = ta(); ; )
    try {
      if (-parseInt(s(339)) / 1 * (-parseInt(s(344)) / 2) + -parseInt(s(343)) / 3 + parseInt(s(333)) / 4 * (parseInt(s(334)) / 5) + -parseInt(s(328)) / 6 * (-parseInt(s(331)) / 7) + parseInt(s(335)) / 8 + -parseInt(s(330)) / 9 * (-parseInt(s(326)) / 10) + -parseInt(s(340)) / 11 * (parseInt(s(336)) / 12) === 949921)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Hl = Object.defineProperty, Xl = Object.getOwnPropertyDescriptor, Ka = (s, t, e, n) => {
  for (var r, i = En, o = n > 1 ? void 0 : n ? Xl(t, e) : t, a = s[i(338)] - 1; a >= 0; a--)
    (r = s[a]) && (o = (n ? r(t, e, o) : r(o)) || o);
  return n && o && Hl(t, e, o), o;
};
function En(s, t) {
  var e = ta();
  return (En = function(n, r) {
    return e[n -= 325];
  })(s, t);
}
class Jr extends C {
  constructor(t, e = 0, n = 0, r = 1, i = 1) {
    super(t, e, n, r, i), this._width = r, this._height = i;
  }
  setRadius(t = 1) {
    var e = En;
    this.width = 2 * t, this[e(325)] = 2 * t;
  }
  getLocalPoint(t, e = 0) {
    var n = En;
    if (this._drawContentDesc.hasBorder)
      return super.getLocalPoint(t, 0);
    let r = t * (2 * Math.PI), i = this._drawContentDesc.shapeSize;
    return { x: 0.5 * i.width * Math.cos(r), y: 0.5 * i.height * Math[n(337)](r) };
  }
  set [$n(329)](t) {
    this[$n(332)] = 2 * t, this.height = 2 * t;
  }
  get radius() {
    return 0.5 * Math[$n(327)](this.width, this.height);
  }
}
Ka([p("EllipseNode")], Jr.prototype, $n(341), 2), Ka([p(hs[$n(342)]("Ellipse"))], Jr.prototype, "_shape", 2);
const Qt = rs;
function rs(s, t) {
  const e = ea();
  return (rs = function(n, r) {
    return e[n -= 440];
  })(s, t);
}
(function() {
  const s = rs, t = ea();
  for (; ; )
    try {
      if (-parseInt(s(457)) / 1 * (-parseInt(s(448)) / 2) + parseInt(s(441)) / 3 * (parseInt(s(463)) / 4) + parseInt(s(472)) / 5 + -parseInt(s(464)) / 6 * (parseInt(s(466)) / 7) + -parseInt(s(440)) / 8 + -parseInt(s(454)) / 9 * (parseInt(s(443)) / 10) + -parseInt(s(444)) / 11 * (-parseInt(s(462)) / 12) === 775341)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Yl = Object.defineProperty, Ul = Object[Qt(452)];
class ds extends C {
  constructor(t, e = 0, n = 0, r = 1, i = 1) {
    super(t, e, n, r, i);
  }
  get image() {
    return this[Qt(461)];
  }
  set image(t) {
    const e = Qt;
    this._imgRaw = t, this[e(469)](t);
  }
  get imageSrc() {
    return this._imageSrc;
  }
  set imageSrc(t) {
    this.setImage(t), this._imageSrc = t;
  }
  [Qt(456)](t) {
    const e = Qt;
    let n = this[e(451)];
    t[e(460)](), (n.hasBorder || n[e(468)]) && this._drawBackgroundOrBorder(t), this[e(442)] != null && this._drawImage(t, this[e(442)]), t.restore();
  }
  _drawImage(t, e) {
    const n = Qt;
    let r = this[n(451)].shapeSize;
    t[n(471)](e, 0.5 * -r.width, 0.5 * -r[n(459)], r.width, r.height);
  }
  setImage(t, e = !1) {
    dt.cancelLoadByObject(this), this._imgRaw = t;
    let n = this;
    return typeof t == "string" && (t = t.trim()), new Promise((r, i) => {
      const o = rs;
      (t == null || t == "") && (this[o(445)] = null, this.imageObject = null, n.style.dirty = !0, r(null)), typeof t == o(467) && dt.loadImageWithObj(this, t, function(a) {
        const h = o;
        a != null ? (n._imageSrc = a[h(446)]("src"), n.imageObject = a, n._imageSrc[h(449)]().endsWith("gif") && (a.isGIF = !0), e == 1 && n[h(450)](a[h(458)], a.height), n.style[h(465)] = !0, r(n.imageObject)) : r(null);
      }), t instanceof HTMLImageElement && (n._imageSrc = t[o(446)]("src"), n.imageObject = t, e == 1 && n.resize(t[o(458)], t.height), n.style[o(465)] = !0, r(n.imageObject));
    });
  }
  resizeToFitImage() {
    const t = Qt;
    return this.imageObject != null && this.resize(this.imageObject.width, this.imageObject[t(459)]), this;
  }
  getImageObject() {
    const t = this;
    return new Promise((e, n) => {
      if (t[rs(442)] != null)
        return void e(t.imageObject);
      let r = dt.objCache.get(t);
      r != null ? r.next = function(i) {
        e(i);
      } : n(null);
    });
  }
  _beforeToJSON(t) {
    const e = Qt;
    super._beforeToJSON(t), this[e(442)] != null && t.indexImage(this.imageObject);
  }
  _toJSON(t) {
    const e = Qt;
    let n = super._toJSON(t);
    if (t != null) {
      let r = t[e(455)];
      if (this[e(442)] != null) {
        let i = r.get(this.imageObject);
        i != null && (n.image = i);
      }
    }
    return n;
  }
  _fromJSON(t) {
    const e = Qt;
    if (super._fromJSON(t), t[e(470)].image != null) {
      let n = t.resourcesArr[t.objJson.image];
      n && n[e(447)] == "img" && (this[e(453)] = n.src);
    }
  }
  destroy() {
    const t = Qt;
    super.destroy(), this.imageObject = null, this[t(461)] = null;
  }
}
function ea() {
  const s = ["11440336CQdAma", "1551795jOYkET", "imageObject", "190IoNpGv", "21329ynHPHn", "_imageSrc", "getAttribute", "type", "2QYIFrr", "toLowerCase", "resize", "_drawContentDesc", "getOwnPropertyDescriptor", "imageSrc", "475281BvvUus", "resourcesIndexMap", "_strokeAndFill", "1543363dGYuhn", "width", "height", "save", "_imgRaw", "1812rwJNqi", "8YFwQMX", "2790KFMrAl", "dirty", "672bUDBkK", "string", "hasBackgroundColor", "setImage", "objJson", "drawImage", "1913560WfDLTc"];
  return (ea = function() {
    return s;
  })();
}
((s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? Ul(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  n && i && Yl(t, e, i);
})([p("ImageNode")], ds.prototype, "className", 2);
var Ct = Sn;
(function() {
  for (var s = Sn, t = na(); ; )
    try {
      if (-parseInt(s(270)) / 1 + -parseInt(s(268)) / 2 + -parseInt(s(272)) / 3 * (-parseInt(s(269)) / 4) + -parseInt(s(279)) / 5 * (-parseInt(s(250)) / 6) + -parseInt(s(260)) / 7 + -parseInt(s(267)) / 8 + parseInt(s(277)) / 9 === 360858)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Jl = Object.defineProperty, Vl = Object.getOwnPropertyDescriptor, Sr = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? Vl(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && Jl(t, e, i), i;
};
function na() {
  var s = ["363069TfDYpa", "_afterUpdateMatrix", "5JsoreE", "2742546pcnCZr", "restore", "drawImage", "_serializers", "pause", "_dom", "src", "_video", "className", "prototype", "328461IfhwTy", "_matrixDirty", "isPlaying", "width", "remove", "dispatchEvent", "imageObject", "43248ThLsyt", "397868hWvsjZ", "4pHdozo", "367123MEhCku", "height", "1445436WQaNjk", "addEventListener", "_videoSrc", "play", "setVideo"];
  return (na = function() {
    return s;
  })();
}
class Un extends ds {
  constructor(t, e = 0, n = 0, r = 1, i = 1) {
    var o = Sn;
    super(), this[o(262)] = !1, this.text = t, this.x = e || 0, this.y = n || 0, this.width = r || 0, this.height = i || 0;
  }
  showCover() {
    this.isPlaying = !1, this._matrixDirty = !0;
  }
  play() {
    var t = Sn;
    this[t(262)] = !0, this[t(257)].play().catch((e) => {
    }), this._matrixDirty = !0;
  }
  pause() {
    var t = Sn;
    this.isPlaying = !1, this._video.pause(), this[t(261)] = !0;
  }
  [Ct(276)](t) {
    var e = Ct;
    const n = this;
    if (this._dom != null && (this[e(255)][e(264)](), this._dom = null), typeof t == "string") {
      this[e(274)] = t;
      let r = ze.createVideo(t, function() {
        var i = e;
        n.autoplay && n[i(275)]();
      });
      r.addEventListener(e(275), function() {
        n[e(265)](new $e("play"));
      }, !1), r.addEventListener("pause", function() {
        var i = e;
        n[i(265)](new $e(i(254)));
      }, !1), r.addEventListener("ended", function() {
        n.dispatchEvent(new $e("ended"));
      }, !1), this[e(257)] = r, this._dom = this._video;
    } else
      this._video = t, this[e(274)] = t.firstElementChild.getAttribute(e(256));
    this[e(257)].width = this[e(263)], this[e(257)][e(271)] = this.height, this._matrixDirty = !0;
  }
  [Ct(273)](t, e) {
    super[Ct(273)](t, e);
  }
  removeEventListener(t, e) {
    super.removeEventListener(t, e);
  }
  _strokeAndFill(t) {
    var e = Ct;
    let n = this._drawContentDesc;
    t.save(), (n.hasBorder || n.hasBackgroundColor) && this._drawBackgroundOrBorder(t);
    let r = this.isPlaying ? this._video : this[e(266)];
    if (r != null) {
      let i = this._drawContentDesc.shapeSize;
      t[e(252)](r, 0.5 * -i.width, 0.5 * -i.height, i.width, i.height);
    }
    t[e(251)]();
  }
  _afterUpdateMatrix() {
    var t = Ct;
    super[t(278)](), this._video != null && this[t(257)].width != this.width && (this._video[t(263)] = this.width, this[t(257)].height = this.height);
  }
  destroy() {
    var t = Ct;
    super.destroy(), this._dom && this[t(255)].remove();
  }
}
function Sn(s, t) {
  var e = na();
  return (Sn = function(n, r) {
    return e[n -= 250];
  })(s, t);
}
Sr([p("VideoNode")], Un.prototype, Ct(258), 2), Sr([p(!1)], Un[Ct(259)], "autoplay", 2), Sr([p(C.prototype[Ct(253)].concat(["autoplay", "videoSrc"]))], Un[Ct(259)], Ct(253), 2), Object.defineProperties(Un.prototype, { videoSrc: { get() {
  return this[Ct(274)];
}, set(s) {
  this.setVideo(s);
} } });
var Vr = hr;
(function() {
  for (var s = hr, t = sa(); ; )
    try {
      if (-parseInt(s(485)) / 1 * (-parseInt(s(488)) / 2) + -parseInt(s(478)) / 3 + parseInt(s(476)) / 4 * (-parseInt(s(486)) / 5) + -parseInt(s(481)) / 6 * (parseInt(s(487)) / 7) + -parseInt(s(490)) / 8 + parseInt(s(474)) / 9 * (parseInt(s(475)) / 10) + parseInt(s(479)) / 11 === 218074)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Gl = Object.defineProperty, ql = Object.getOwnPropertyDescriptor;
function hr(s, t) {
  var e = sa();
  return (hr = function(n, r) {
    return e[n -= 474];
  })(s, t);
}
function sa() {
  var s = ["962454SgnbDL", "11875501LLEpIg", "hasBorder", "4614nvwxXE", "setCanvas", "width", "className", "146khSqgF", "9255TqvZEQ", "2107SieAMh", "2460aCiIvM", "save", "2999384QJswTK", "3384IWTsvh", "4700CgnOdK", "628efiPjy", "height"];
  return (sa = function() {
    return s;
  })();
}
class Eh extends C {
  constructor(t, e = 0, n = 0, r = 1, i = 1) {
    super(t, e, n, r, i);
  }
  _strokeAndFill(t) {
    var e = hr;
    let n = this._drawContentDesc;
    if (t[e(489)](), (n[e(480)] || n.hasBackgroundColor) && this._drawBackgroundOrBorder(t), this.canvas != null) {
      let r = this._drawContentDesc.shapeSize;
      (this.canvas[e(483)] != r.width || this.canvas.height != r.height) && this.onSizeChanged(r.width, r[e(477)]), t.drawImage(this.canvas, 0.5 * -r[e(483)], 0.5 * -r.height, r[e(483)], r[e(477)]);
    }
    t.restore();
  }
  [Vr(482)](t) {
    this.canvas = t;
  }
  onSizeChanged(t, e) {
    var n = Vr;
    this.canvas != null && (this.canvas.width = t, this.canvas[n(477)] = e);
  }
}
((s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? ql(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  n && i && Gl(t, e, i);
})([p("CanvasNode")], Eh.prototype, Vr(484), 2);
const _t = ia;
function ra() {
  const s = ["vertices", "9zHNNqO", "1119328pqbyMa", "_isTextBlank", "set", "width", "3DIaaaX", "3099390brqXOi", "defineProperty", "321715ePuCVf", "_fromJSON", "_matrixDirty", "8IgGMIw", "556660XmzlqE", "_updateShapeSize", "152022DtRiMx", "_getOBBPoints", "134844afJASn", "_shape", "_getTextAABB", "prototype", "167594kmlrHf", "push", "getOwnPropertyDescriptor", "shapeSize", "shapeIndexMap", "length", "restore", "shape", "shapes", "className", "contains"];
  return (ra = function() {
    return s;
  })();
}
(function() {
  const s = ia, t = ra();
  for (; ; )
    try {
      if (-parseInt(s(502)) / 1 + parseInt(s(498)) / 2 * (-parseInt(s(523)) / 3) + -parseInt(s(497)) / 4 * (-parseInt(s(526)) / 5) + -parseInt(s(500)) / 6 + parseInt(s(506)) / 7 + parseInt(s(519)) / 8 + -parseInt(s(518)) / 9 * (-parseInt(s(524)) / 10) === 163972)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Kl = Object[_t(525)], Ql = Object[_t(508)], kr = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? Ql(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && Kl(t, e, i), i;
};
function ia(s, t) {
  const e = ra();
  return (ia = function(n, r) {
    return e[n -= 495];
  })(s, t);
}
class Es extends C {
  constructor(t, e = 0, n = 0, r = 1, i = 1) {
    super(t, e, n, r, i);
  }
  get shape() {
    return this._shape;
  }
  set [_t(513)](t) {
    const e = _t;
    t !== this._shape && (this[e(496)] = !0), this[e(503)] = t;
  }
  setShape(t) {
    this._shape = t, this._matrixDirty = !0;
  }
  hitTest(t, e) {
    const n = _t;
    if (!this[n(520)]() && this[n(504)]()[n(516)](t, e))
      return !0;
    if (!this._obb.aabb[n(516)](t, e))
      return !1;
    if (!this._drawContentDesc.hasBorder && this[n(503)] instanceof re) {
      let r = this.worldToLocalXY(t, e), i = this._localToNormal(r.x, r.y);
      if (this._shape.isClosed)
        return ht.isPointInPolygon(i, this._shape[n(517)]);
      let o = Math.max(this._pickPrecision, this._computedStyle.lineWidth || 1), a = this._localToNormal(o, 0).x;
      return Ut.isPointOnLineSegs(i, this[n(503)].vertices, !1, a);
    }
    return ht.isPointInPolygon({ x: t, y: e }, this._obb.points);
  }
  [_t(501)]() {
    const t = _t;
    if (this._shape instanceof re) {
      this[t(499)]();
      let e = this._drawContentDesc[t(509)], n = 0.5 * e[t(522)], r = 0.5 * e.height;
      return this._shape.vertices.map((i, o) => ({ x: i.x * n, y: i.y * r }));
    }
    return super._getOBBPoints();
  }
  _strokeAndFill(t) {
    const e = _t;
    let n = this._drawContentDesc;
    t.save(), (n.hasBorder || n.hasBackgroundColor) && this._drawBackgroundOrBorder(t), this.drawShape(t), t[e(512)]();
  }
  drawShape(t) {
    this._shape.draw(t, this);
  }
  _beforeToJSON(t) {
    const e = _t;
    super._beforeToJSON(t);
    let n = this.shape;
    if (t.shapeIndexMap.get(n) == null) {
      let r = t[e(514)][e(511)];
      t.shapeIndexMap[e(521)](n, r), t.shapes[e(507)](n.toJSON());
    }
  }
  _toJSON(t) {
    const e = _t;
    let n = super._toJSON(t);
    if (t != null) {
      let r = t.shapeIndexMap;
      if (this[e(503)] != null) {
        let i = r.get(this._shape);
        n.shape = i;
      }
    }
    return n;
  }
  [_t(495)](t) {
    const e = _t;
    if (super[e(495)](t), t.objJson[e(513)] != null) {
      let n = t[e(510)].get(t.objJson[e(513)]);
      this.setShape(n);
    }
  }
}
kr([p("ShapeNode")], Es[_t(505)], _t(515), 2), kr([p(hs.getShape("Rect"))], Es.prototype, "_shape", 2), kr([p(3)], Es.prototype, "_pickPrecision", 2);
const Gr = Ze;
(function() {
  const s = Ze, t = oa();
  for (; ; )
    try {
      if (parseInt(s(144)) / 1 + parseInt(s(140)) / 2 * (-parseInt(s(135)) / 3) + parseInt(s(134)) / 4 * (-parseInt(s(133)) / 5) + parseInt(s(130)) / 6 * (-parseInt(s(132)) / 7) + parseInt(s(137)) / 8 * (-parseInt(s(141)) / 9) + -parseInt(s(142)) / 10 + parseInt(s(143)) / 11 === 741952)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Zl = Object.defineProperty, $l = Object.getOwnPropertyDescriptor, Qa = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? $l(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && Zl(t, e, i), i;
};
class qr extends C {
  constructor(t, e = 0, n = 0, r = 1, i = 1) {
    super(t, e, n, r, i);
  }
  _strokeAndFill(t) {
    const e = Ze;
    let n = this._drawContentDesc;
    t.save(), (n.hasBorder || n.hasBackgroundColor) && this[e(138)](t), this.imageObject != null && this._drawImage(t, this[e(127)]), t.restore();
  }
  _drawImage(t, e) {
    const n = Ze;
    let r = this._drawContentDesc.shapeSize;
    t.drawImage(e, 0.5 * -r[n(136)], 0.5 * -r[n(139)], r[n(136)], r.height);
  }
  setHtml(t) {
    t !== this._html && (this._html = t, this._updateImage());
  }
  _updateImage() {
    const t = Ze;
    if (this.imageObject == null) {
      let r = new Image();
      this.imageObject = r;
    }
    let e = this._drawContentDesc.shapeSize, n = function(r, i, o, a) {
      const h = Gr;
      return "data:image/svg+xml;charset=UTF-8," + encodeURIComponent('<svg width="' + i + '" height="' + o + '" viewBox="0 0 ' + i + " " + o + '" xmlns="http://www.w3.org/2000/svg"><foreignObject width="100%" height="100%"><html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><style>body{margin:0;padding:0;}</style>' + a + "</body></html></foreignObject></svg >").replace(/'/g, "%27").replace(/"/g, h(125));
    }(this._html, e[t(136)], e.height, this[t(128)]);
    this[t(127)].onload = () => {
      this[t(126)] = !0;
    }, this.imageObject.src = n;
  }
  _afterUpdateMatrix() {
    const t = Ze;
    if (super._afterUpdateMatrix(), this.imageObject == null)
      return;
    let e = this._drawContentDesc.shapeSize;
    (this[t(127)][t(136)] !== e[t(136)] || this[t(127)].height !== e.height) && this._updateImage();
  }
  get html() {
    return this._html;
  }
  set html(t) {
    t !== this._html && this.setHtml(t);
  }
}
function Ze(s, t) {
  const e = oa();
  return (Ze = function(n, r) {
    return e[n -= 125];
  })(s, t);
}
function oa() {
  const s = ["_html", "_serializers", "28146BwxUVs", "prototype", "1911Pqvnvu", "342290IMJrfe", "4EcjqTP", "3CvxyaH", "width", "1344PnSCXL", "_drawBackgroundOrBorder", "height", "2939260YcfNJC", "33246eaNrIA", "1016570coWNcx", "32818786fLklOr", "1299406bxSpEt", "%22", "_matrixDirty", "imageObject"];
  return (oa = function() {
    return s;
  })();
}
Qa([p("HtmlNode")], qr[Gr(131)], "className", 2), Qa([p(C.prototype._serializers.concat(["html"]))], qr.prototype, Gr(129), 2);
var Ae = ha;
function aa() {
  var s = ["_direction", "732852pmNPpa", "1112naYeqP", "length", "367106FmsoNu", "22071xdpxcR", "20884490CrjGKo", "5UPtIAj", "_state", "4274946TDYjqT", "_calcAZ", "1UEFlsR", "_updatePoints", "1192209SmhpcO", "push", "40PUFtlL", "direction", "prototype", "2549096fiqlaF", "defineProperty"];
  return (aa = function() {
    return s;
  })();
}
(function() {
  for (var s = ha, t = aa(); ; )
    try {
      if (-parseInt(s(468)) / 1 * (parseInt(s(461)) / 2) + parseInt(s(470)) / 3 + -parseInt(s(475)) / 4 * (-parseInt(s(464)) / 5) + parseInt(s(466)) / 6 + parseInt(s(462)) / 7 * (parseInt(s(459)) / 8) + -parseInt(s(458)) / 9 * (-parseInt(s(472)) / 10) + -parseInt(s(463)) / 11 === 429004)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var tc = Object[Ae(456)], ec = Object.getOwnPropertyDescriptor, xs = (s, t, e, n) => {
  for (var r, i = Ae, o = n > 1 ? void 0 : n ? ec(t, e) : t, a = s[i(460)] - 1; a >= 0; a--)
    (r = s[a]) && (o = (n ? r(t, e, o) : r(o)) || o);
  return n && o && tc(t, e, o), o;
};
function ha(s, t) {
  var e = aa();
  return (ha = function(n, r) {
    return e[n -= 456];
  })(s, t);
}
class Jn extends j {
  constructor(t, e, n, r, i) {
    super(t, e, n, r, i);
  }
  getSegmentCount() {
    return 2;
  }
  [Ae(469)]() {
    var t = Ae;
    const e = this[t(467)](), n = e[0], r = e[1];
    let i;
    i = n.x == r.x || n.y == r.y ? A.middle(n, r) : this.direction == Dt.horizontal ? { x: r.x, y: n.y } : { x: n.x, y: r.y };
    let o = this[t(465)].points;
    return o[t(460)] = 0, o[t(471)](n, i, r), o;
  }
  get [Ae(473)]() {
    return this[Ae(457)];
  }
  set direction(t) {
    this[Ae(457)] = t;
  }
}
xs([p("LShapeLink")], Jn.prototype, "className", 2), xs([p(j[Ae(474)]._serializers.concat(["direction"]))], Jn.prototype, "_serializers", 2), xs([p([0, 1])], Jn.prototype, "_middleIndex", 2), xs([p(Dt.horizontal)], Jn.prototype, "_direction", 2);
const nt = lr;
(function() {
  const s = lr, t = la();
  for (; ; )
    try {
      if (parseInt(s(117)) / 1 * (-parseInt(s(123)) / 2) + parseInt(s(127)) / 3 + parseInt(s(106)) / 4 + -parseInt(s(101)) / 5 + parseInt(s(109)) / 6 * (parseInt(s(108)) / 7) + parseInt(s(105)) / 8 * (parseInt(s(102)) / 9) + parseInt(s(116)) / 10 * (-parseInt(s(120)) / 11) === 913018)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var nc = Object.defineProperty, sc = Object.getOwnPropertyDescriptor, Lr = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? sc(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && nc(t, e, i), i;
};
function lr(s, t) {
  const e = la();
  return (lr = function(n, r) {
    return e[n -= 100];
  })(s, t);
}
function la() {
  const s = ["getLocalPoint", "_measureDistance", "prototype", "5416089FbojwW", "getPoints", "max", "5307560zcldXm", "358551Nkbnvg", "_updatePoints", "aabb", "288cgStRQ", "6102652ehgXpf", "_obb", "203FSXTNO", "187242cMHvGE", "contains", "hitTest", "className", "_getEndVec", "_getOBBPoints", "ctrlPoint", "4274860rCHLTb", "579eUTwXG", "_preHitTest", "direction", "66iaanJL", "normalize", "length", "3906XQSBXV"];
  return (la = function() {
    return s;
  })();
}
class Cs extends j {
  constructor(t, e, n, r, i) {
    const o = lr;
    super(t, e, n, r, i), this[o(119)] = "horizontal";
  }
  [nt(103)]() {
    let t = this._calcAZ(), e = t[0], n = t[1], r = this.getCtrlPoint(e.x, e.y, n.x, n.y), i = this._state.points;
    return i.length = 0, i.push(e, r, n), i;
  }
  translateWith(t, e) {
    const n = nt;
    return super.translateWith(t, e), this[n(115)] != null && (this.ctrlPoint.x += t, this.ctrlPoint.y += e), this;
  }
  autoCalcCtrlPoint(t, e, n, r) {
    let i = (t + n) / 2, o = (e + r) / 2;
    return this[nt(119)] == Dt.horizontal ? o += (r - e) / 2 : o -= (r - e) / 2, { x: i, y: o };
  }
  getCtrlPoint(t, e, n, r) {
    return this.ctrlPoint != null ? this.ctrlPoint : this.autoCalcCtrlPoint(t, e, n, r);
  }
  setCtrlPoint(t) {
    this.ctrlPoint = t, this._matrixDirty = !0;
  }
  resetCtrlPoint() {
    this.ctrlPoint = void 0, this._matrixDirty = !0;
  }
  [nt(114)]() {
    const t = nt;
    this.points = this._updatePoints();
    let e = this.points;
    const n = zs._getQuadBezierExtremas(e[0], e[1], e[2]);
    if (n[t(122)] == 0)
      return e;
    let r = [e[0], e[2]];
    for (let i = 0; i < n[t(122)]; i++)
      r.push(this.getPoint(n[i]));
    return r;
  }
  getPoint(t) {
    let e = this[nt(128)](), n = e[0], r = e[1], i = e[2], o = (1 - t) * (1 - t);
    return { x: o * n.x + 2 * (1 - t) * t * r.x + t * t * i.x, y: o * n.y + 2 * (1 - t) * t * r.y + t * t * i.y };
  }
  [nt(124)](t, e) {
    return this.getPoint(t);
  }
  _getBeginVec() {
    const t = nt;
    let e = this.points[0], n = this.getPoint(0.01), r = [e.x - n.x, e.y - n.y];
    return B[t(121)](r, r);
  }
  [nt(113)]() {
    const t = nt;
    let e = this.getPoint(0.9), n = this.points[this.points.length - 1], r = [n.x - e.x, n.y - e.y];
    return B[t(121)](r, r);
  }
  [nt(111)](t, e) {
    const n = nt;
    if (this[n(118)](t, e))
      return !0;
    let r = this[n(107)][n(104)], i = this.getComputedStyle().lineWidth || 0, o = Math[n(100)](0.5 * i, this._pickPrecision);
    if (!r[n(110)](t, e, o))
      return !1;
    let a = this.worldToLocalXY(t, e);
    return this._measureDistance(a.x, a.y).dist < o;
  }
  _measureDistance(t, e) {
    const n = nt;
    let r = this[n(128)](), i = r[0], o = r[1], a = r[2];
    return zs[n(125)](t, e, i.x, i.y, o.x, o.y, a.x, a.y);
  }
}
Lr([p(kt.QuadBezierLink)], Cs[nt(126)], nt(112), 2), Lr([p(new zs())], Cs[nt(126)], "_shape", 2), Lr([p(j[nt(126)]._serializers.concat(["direction", q[nt(115)]]))], Cs[nt(126)], "_serializers", 2);
var Fe = cr;
(function() {
  for (var s = cr, t = ca(); ; )
    try {
      if (-parseInt(s(424)) / 1 + parseInt(s(429)) / 2 + -parseInt(s(423)) / 3 + parseInt(s(422)) / 4 + parseInt(s(428)) / 5 * (parseInt(s(431)) / 6) + -parseInt(s(421)) / 7 + parseInt(s(430)) / 8 === 710148)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var rc = Object.defineProperty, ic = Object.getOwnPropertyDescriptor, bs = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? ic(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && rc(t, e, i), i;
};
function cr(s, t) {
  var e = ca();
  return (cr = function(n, r) {
    return e[n -= 420];
  })(s, t);
}
function ca() {
  var s = ["3168FBABWs", "_shape", "Tip", "8414385pGaYzh", "865748mYOzgb", "4168341PTlvut", "1180417UaTENM", "_width", "arrowsSize", "prototype", "13445KzRlda", "848330AVneRI", "19373384DiRLkW"];
  return (ca = function() {
    return s;
  })();
}
class Vn extends en {
  constructor(t, e = 0, n = 0, r = 1, i = 1) {
    super(t, e, n, r, i), this.originPosition = "cb";
  }
  resizeToFitText() {
    var t = cr;
    const e = this[t(426)] == null ? 8 : this.arrowsSize;
    let n = this._computedStyle.computePadding();
    return this[t(425)] = this._textWidth + n, this._height = this._textHeight + n + e, this;
  }
}
function ua(s, t) {
  const e = pa();
  return (ua = function(n, r) {
    return e[n -= 169];
  })(s, t);
}
bs([p("TipNode")], Vn.prototype, "className", 2), bs([p(8)], Vn[Fe(427)], Fe(426), 2), bs([p(hs.getShape(Fe(420)))], Vn[Fe(427)], Fe(432), 2), bs([p(en.prototype._serializers.concat([Fe(426)]))], Vn[Fe(427)], "_serializers", 2);
const we = ua;
(function() {
  const s = ua, t = pa();
  for (; ; )
    try {
      if (parseInt(s(182)) / 1 + -parseInt(s(172)) / 2 * (parseInt(s(171)) / 3) + parseInt(s(174)) / 4 + -parseInt(s(170)) / 5 + parseInt(s(169)) / 6 * (parseInt(s(183)) / 7) + parseInt(s(179)) / 8 + -parseInt(s(178)) / 9 === 498700)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var oc = Object.defineProperty, ac = Object.getOwnPropertyDescriptor, ws = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? ac(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && oc(t, e, i), i;
};
class Gn extends j {
  constructor(t, e, n, r, i) {
    super(t, e, n, r, i);
  }
  getSegmentCount() {
    return 4;
  }
  [we(175)](t, e) {
    let n = (e.y - t.y) / 2, r = (e.x - t.x) / 2;
    return this._direction == Dt.horizontal ? { x: t.x + r, y: t.y } : { x: t.x, y: t.y + n };
  }
  getFold2(t, e) {
    const n = we;
    let r = (e.y - t.y) / 2, i = (e.x - t.x) / 2;
    return this._direction == Dt[n(173)] ? { x: e.x - i, y: e.y } : { x: e.x, y: e.y - r };
  }
  [we(176)]() {
    const t = we, e = this[t(177)](), n = e[0], r = e[1];
    let i = this[t(175)](n, r), o = this[t(185)](n, r);
    const a = [n, i, { x: (i.x + o.x) / 2, y: (i.y + o.y) / 2 }, o, r];
    if (this.points = a, this.endArrow) {
      let h = a.length - 2;
      this.endArrow.setOriginOnLink(0, h);
    }
    return a;
  }
  get direction() {
    return this._direction;
  }
  set direction(t) {
    this._direction = t;
  }
}
function pa() {
  const s = ["6877512diVRHG", "549720eBgPQi", "direction", "concat", "874657NiSRXg", "14DwmGdO", "prototype", "getFold2", "1508778YdWhah", "2739320SXTWqW", "849rirLRm", "2710jGqnHG", "horizontal", "2991596TQWUVM", "getFold1", "_updatePoints", "_calcAZ"];
  return (pa = function() {
    return s;
  })();
}
ws([p("ZShapeLink")], Gn[we(184)], "className", 2), ws([p(j.prototype._serializers[we(181)]([we(180)]))], Gn[we(184)], "_serializers", 2), ws([p([1, 0.5])], Gn.prototype, "_middleIndex", 2), ws([p(Dt.horizontal)], Gn[we(184)], "_direction", 2);
const vt = da;
function da(s, t) {
  const e = fa();
  return (da = function(n, r) {
    return e[n -= 236];
  })(s, t);
}
function fa() {
  const s = ["maxForceDistance", "setOriginEdgeWeight", "selectedNode", "origin", "isNode", "4170655LJzeLX", "initialize", "uuid", "9076hoZEkl", "initNodes", "neighbors", "prototype", "6ZAVpQM", "getLink", "553088IibxVT", "log", "calculate", "523402udhVnR", "183YvSkke", "207bCXftO", "frame_height", "2037070MXSkMQ", "originEdges", "_fid_", "edges", "14FqVdqK", "gravity", "force", "27124064NwvKjk", "mass", "attractiveForce", "121330fQhXRH", "travel", "frame_width"];
  return (fa = function() {
    return s;
  })();
}
(function() {
  const s = da, t = fa();
  for (; ; )
    try {
      if (parseInt(s(252)) / 1 + -parseInt(s(256)) / 2 + -parseInt(s(253)) / 3 * (parseInt(s(243)) / 4) + parseInt(s(240)) / 5 * (-parseInt(s(247)) / 6) + -parseInt(s(260)) / 7 * (parseInt(s(249)) / 8) + parseInt(s(254)) / 9 * (-parseInt(s(266)) / 10) + parseInt(s(263)) / 11 === 580820)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Kr = function() {
};
Kr[vt(246)] = { calculate: function(s, t) {
  this.dx = s.x - t.x, this.dy = s.y - t.y, this.d2 = this.dx * this.dx + this.dy * this.dy, this.d = Math.sqrt(this.d2);
} };
class hc {
  constructor(t, e, n) {
    const r = vt;
    this.originEdges = [], this[r(242)] = 0, this.frame_width = e, this[r(255)] = n, this.origin = t, this.initialize();
    let i = this;
    he.travel(t, function(o, a) {
      o._fid_ = ++i.uuid;
    }), this[r(244)](t);
  }
  [vt(244)](t) {
    const e = vt;
    let n = this;
    he[e(267)](t, function(r, i) {
      const o = e;
      if (r[o(239)] && i != null) {
        let a = i, h = r;
        a == t && n[o(236)](h, n.originWeight);
        let l = 1 | h.mass;
        n.addNode(h, l);
        let c = 30;
        n.addLink(a, h, c);
      }
    });
  }
  [vt(241)]() {
    const t = vt;
    this.originWeight = 48, this.speed = 12, this.gravity = 50, this.maxForceDistance = 512, this.nodes = new Array(), this.edges = new Array(), this[t(257)] = new Array();
  }
  originForce(t, e) {
    const n = vt;
    if (this[n(257)][t._fid_]) {
      if (t._fid_ != this.selectedNode) {
        let r = this[n(257)][t[n(258)]], i = (e.d - r) / r;
        t.force.x += i * (e.dx / e.d), t[n(262)].y += i * (e.dy / e.d);
      }
    } else if (t[n(258)] != this.selectedNode) {
      let r = this.gravity * t.mass * this.origin.mass / e.d2, i = this.maxForceDistance - e.d;
      i > 0 && (r *= Math.log(i)), r < 1024 && (t.force.x -= r * e.dx / e.d, t[n(262)].y -= r * e.dy / e.d);
    }
  }
  [vt(265)](t, e, n) {
    const r = vt;
    let i = this.edges[t._fid_][e._fid_];
    if (i += 3 * (t.neighbors + e[r(245)]), i) {
      let o = (n.d - i) / i;
      t._fid_ != this.selectedNode && (t[r(262)].x -= o * n.dx / n.d, t[r(262)].y -= o * n.dy / n.d), e._fid_ != this[r(237)] && (e.force.x += o * n.dx / n.d, e.force.y += o * n.dy / n.d);
    }
  }
  repulsiveForce(t, e, n) {
    const r = vt;
    let i = this[r(261)] * t.mass * e.mass / n.d2, o = this[r(269)] - n.d;
    o > 0 && (i *= Math[r(250)](o)), i < 1024 && (t[r(262)].x += i * n.dx / n.d, t.force.y += i * n.dy / n.d);
  }
  doLayout() {
    this.applyForce();
  }
  applyForce() {
    const t = vt;
    for (let e = 0; e < this.nodes.length; e++) {
      let n = this.nodes[e];
      for (let i = 0; i < this.nodes.length; i++)
        if (e != i) {
          let o = this.nodes[i], a = new Kr();
          a.calculate(n, o), this[t(248)](n._fid_, o._fid_) != null && this.attractiveForce(n, o, a), e != this[t(237)] && this.repulsiveForce(n, o, a);
        }
      let r = new Kr();
      r[t(251)](this[t(238)], n), this.originForce(n, r), n.force.x *= this.speed, n.force.y *= this.speed, n.x += n.force.x, n.y += n.force.y, n.force.x = 0, n.force.y = 0;
    }
  }
  bounds(t) {
    const e = vt;
    let n = t.x, r = t.x + 28, i = t.y, o = t.y + 28;
    n < 0 && (t.x = 0), i < 0 && (t.y = 0), r > this.frame_width && (t.x = this[e(268)] - 28), o > this.frame_height && (t.y = this.frame_height - 28);
  }
  setOriginEdgeWeight(t, e) {
    this.originEdges[t._fid_] = e;
  }
  addNode(t, e) {
    const n = vt;
    t[n(264)] = 1 | e, t.neighbors = 0 | t[n(245)], t[n(262)] = { x: 0, y: 0 }, this.nodes.push(t);
  }
  getLink(t, e) {
    let n = this.edges[t];
    return n == null ? null : n[e];
  }
  addLink(t, e, n) {
    const r = vt;
    !this[r(259)][t._fid_] && (this.edges[t._fid_] = new Object()), this.edges[t[r(258)]][e._fid_] = n;
    try {
      t[r(245)]++, e.neighbors++;
    } catch (i) {
      console.log("Error Adding Edge: " + i);
    }
  }
}
const St = ur;
function ur(s, t) {
  const e = ga();
  return (ur = function(n, r) {
    return e[n -= 473];
  })(s, t);
}
(function() {
  const s = ur, t = ga();
  for (; ; )
    try {
      if (parseInt(s(485)) / 1 * (-parseInt(s(473)) / 2) + -parseInt(s(489)) / 3 * (parseInt(s(478)) / 4) + parseInt(s(483)) / 5 + parseInt(s(476)) / 6 + -parseInt(s(474)) / 7 * (parseInt(s(484)) / 8) + -parseInt(s(481)) / 9 * (parseInt(s(479)) / 10) + parseInt(s(482)) / 11 === 642524)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var lc = Object.defineProperty, cc = Object.getOwnPropertyDescriptor, vs = (s, t, e, n) => {
  const r = ur;
  for (var i, o = n > 1 ? void 0 : n ? cc(t, e) : t, a = s[r(486)] - 1; a >= 0; a--)
    (i = s[a]) && (o = (n ? i(t, e, o) : i(o)) || o);
  return n && o && lc(t, e, o), o;
};
function ga() {
  const s = ["push", "76371IfSmqu", "direction", "_serializers", "localPoints", "_inArcSide", "prototype", "36064czcIKi", "7341362QnwwBK", "_calcAZ", "1068228ocatwb", "getPoint", "124zvrfaW", "10490mskRfQ", "atan2", "8163UkJhLk", "42901815esJbpv", "1727285RhzESz", "8YBaUfe", "55LVngMw", "length", "getLocalPoint"];
  return (ga = function() {
    return s;
  })();
}
class qn extends j {
  constructor(t, e, n, r, i) {
    super(t, e, n, r, i);
  }
  [St(477)](t) {
    const e = St;
    let n = this.getPoints(), r = n[0], i = n[n[e(486)] - 1], o = (r.x + i.x) / 2, a = (r.y + i.y) / 2, h = r.x - i.x, l = r.y - i.y, c = Math.sqrt(h * h + l * l) / 2, u = Math[e(480)](l, h), f = u + Math.PI * t;
    return this.direction === Dt.anticlockwise && (f = u - Math.PI * t), { x: o + c * Math.cos(f), y: a + c * Math.sin(f) };
  }
  [St(487)](t, e) {
    return this[St(477)](t);
  }
  _getOBBPoints() {
    const t = St;
    this.points = this._updatePoints();
    let e = this.points[0], n = this.points[this.points.length - 1], r = [e];
    {
      let i = [], o = { x: 0.5 * (e.x + n.x), y: 0.5 * (e.y + n.y) }, a = 0.5 * A.distance(e.x, e.y, n.x, n.y);
      i[t(488)]({ x: o.x, y: o.y - a }), i.push({ x: o.x, y: o.y + a }), i.push({ x: o.x - a, y: o.y }), i[t(488)]({ x: o.x + a, y: o.y });
      for (let h = 0; h < i.length; h++)
        this[t(493)](e, n, i[h]) && r.push(i[h]);
    }
    return r.push(n), r;
  }
  _updatePoints() {
    return this[St(475)]();
  }
  hitTest(t, e) {
    const n = St;
    if (this._preHitTest(t, e))
      return !0;
    let r = this._obb.aabb, i = this.getComputedStyle().lineWidth || 0, o = Math.max(0.5 * i, this._pickPrecision);
    if (!r.contains(t, e, o))
      return !1;
    let a = this._obb[n(492)], h = a[0], l = a[a.length - 1], c = 0.5 * (h.x + l.x), u = 0.5 * (h.y + l.y), f = this.worldToLocalXY(t, e), g = A.distance(f.x, f.y, c, u), y = 0.5 * A.distance(h.x, h.y, l.x, l.y);
    return !(Math.abs(g - y) >= o) && this._inArcSide(h, l, f);
  }
  _inArcSide(t, e, n) {
    const r = St;
    let i = [e.x - t.x, e.y - t.y], o = [n.x - t.x, n.y - t.y], a = B.cross(i, o);
    return this[r(490)] === Dt.anticlockwise ? a > 0 : a < 0;
  }
  _measureDistance(t, e, n) {
    const r = St;
    let i = 0.5 * (t.x + e.x), o = 0.5 * (t.y + e.y), a = 0.5 * A.distance(t.x, t.y, e.x, e.y), h = A.distance(n.x, n.y, i, o), l = Math.atan2(t.y - o, t.x - i), c = (Math[r(480)](n.y - o, n.x - i) - l) / Math.PI;
    return !this[r(493)](t, e, n) && (h += a, c = 0), { dist: Math.abs(h - a), t: c };
  }
}
vs([p(kt.ArcLink)], qn.prototype, "className", 2), vs([p(new mh())], qn.prototype, "_shape", 2), vs([p(j[St(494)]._serializers.concat(["direction"]))], qn[St(494)], St(491), 2), vs([p(Dt.clockwise)], qn[St(494)], St(490), 2);
const rt = ya;
(function() {
  const s = ya, t = ma();
  for (; ; )
    try {
      if (parseInt(s(492)) / 1 + parseInt(s(472)) / 2 * (parseInt(s(500)) / 3) + parseInt(s(477)) / 4 * (-parseInt(s(489)) / 5) + parseInt(s(480)) / 6 * (parseInt(s(481)) / 7) + parseInt(s(473)) / 8 + -parseInt(s(491)) / 9 * (parseInt(s(499)) / 10) + -parseInt(s(494)) / 11 * (-parseInt(s(497)) / 12) === 828415)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var uc = Object.defineProperty, pc = Object[rt(474)], Pr = (s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? pc(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  return n && i && uc(t, e, i), i;
};
function ya(s, t) {
  const e = ma();
  return (ya = function(n, r) {
    return e[n -= 470];
  })(s, t);
}
function ma() {
  const s = ["setCtrlPoint1", "485756CpuahY", "prototype", "_matrixDirty", "2418wdwHdw", "329nnvxIh", "push", "_serializers", "calcCtrlPoint2", "_calcAZ", "getPoint", "_getOBBPoints", "getComputedStyle", "55pCNcUX", "worldToLocalXY", "8504046rUdPYd", "584837yvRyVa", "BezierLink", "154apofpA", "calcCtrlPoint1", "ctrlPoint2", "532764BAOuvB", "contains", "10MFpqxA", "853869gvkOAu", "aabb", "length", "_autoCalcCtrlPoint", "_getCubicBezierExtremas", "4LRSNRt", "10516448JKCLks", "getOwnPropertyDescriptor", "hitTest"];
  return (ma = function() {
    return s;
  })();
}
class As extends j {
  constructor(t, e, n, r, i) {
    super(t, e, n, r, i);
  }
  translateWith(t, e) {
    const n = rt;
    return super.translateWith(t, e), this.ctrlPoint1 != null && (this.ctrlPoint1.x += t, this.ctrlPoint1.y += e), this[n(496)] != null && (this.ctrlPoint2.x += t, this.ctrlPoint2.y += e), this;
  }
  [rt(476)](t) {
    const e = rt;
    this.ctrlPoint1 = t, this[e(479)] = !0;
  }
  setCtrlPoint2(t) {
    const e = rt;
    this[e(496)] = t, this[e(479)] = !0;
  }
  [rt(470)](t, e, n) {
    let r = e.x - t.x, i = e.y - t.y;
    return { x: (e.x + t.x) / 2 + 0.382 * r, y: (e.y + t.y) / 2 - 0.382 * i };
  }
  [rt(495)](t, e, n) {
    return this.ctrlPoint1 != null ? this.ctrlPoint1 : this._autoCalcCtrlPoint(t, n, e);
  }
  [rt(484)](t, e, n) {
    return this.ctrlPoint2 != null ? this.ctrlPoint2 : this._autoCalcCtrlPoint(e, n, t);
  }
  resetCtrlPoint() {
    this.ctrlPoint1 = void 0, this.ctrlPoint2 = void 0, this._matrixDirty = !0;
  }
  [rt(487)]() {
    const t = rt;
    this.points = this._updatePoints();
    let e = this.points;
    const n = Bs[t(471)](e[0], e[1], e[3], e[4]);
    if (n.length == 0)
      return e;
    let r = [e[0], e[4]];
    for (let i = 0; i < n[t(502)]; i++)
      r[t(482)](this.getPoint(n[i]));
    return r;
  }
  [rt(486)](t) {
    let e = this.getPoints(), n = e[0], r = e[1], i = e[3], o = e[4], a = (1 - t) * (1 - t) * (1 - t), h = 3 * (1 - t) * (1 - t) * t, l = 3 * (1 - t) * t * t, c = t * t * t;
    return { x: a * n.x + h * r.x + l * i.x + c * o.x, y: a * n.y + h * r.y + l * i.y + c * o.y };
  }
  getLocalPoint(t, e) {
    return this.getPoint(t);
  }
  _updatePoints() {
    const t = rt;
    let e = this._state.points;
    e.length = 0;
    const n = this[t(485)](), r = n[0], i = n[1];
    let o = { x: (r.x + i.x) / 2, y: (r.y + i.y) / 2 }, a = this.calcCtrlPoint1(r, i, o), h = this[t(484)](r, i, o);
    return e[t(482)](r, a, o, h, i), e;
  }
  [rt(475)](t, e) {
    const n = rt;
    if (this._preHitTest(t, e))
      return !0;
    let r = this._obb[n(501)], i = this[n(488)]().lineWidth || 0, o = Math.max(0.5 * i, this._pickPrecision);
    if (!r[n(498)](t, e, o))
      return !1;
    let a = this[n(490)](t, e);
    return this._measureDistance(a.x, a.y).dist < o;
  }
  _measureDistance(t, e) {
    let n = this.getPoints(), r = n[0], i = n[1], o = n[3], a = n[4];
    return Bs._measureDistance(t, e, r.x, r.y, i.x, i.y, o.x, o.y, a.x, a.y);
  }
}
Pr([p(kt[rt(493)])], As.prototype, "className", 2), Pr([p(new Bs())], As.prototype, "_shape", 2), Pr([p(j[rt(478)][rt(483)].concat([q.ctrlPoint1, q.ctrlPoint2]))], As.prototype, rt(483), 2);
var is = pr;
(function() {
  for (var s = pr, t = Ia(); ; )
    try {
      if (parseInt(s(129)) / 1 * (parseInt(s(119)) / 2) + parseInt(s(121)) / 3 * (-parseInt(s(130)) / 4) + parseInt(s(128)) / 5 * (parseInt(s(123)) / 6) + parseInt(s(122)) / 7 * (parseInt(s(125)) / 8) + parseInt(s(134)) / 9 * (parseInt(s(120)) / 10) + -parseInt(s(126)) / 11 + -parseInt(s(124)) / 12 * (parseInt(s(131)) / 13) === 383025)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var dc = Object[is(132)], fc = Object.getOwnPropertyDescriptor;
function Ia() {
  var s = ["84mZyRVB", "892skKFDs", "2873jsxbao", "defineProperty", "length", "459NHuaVk", "setPath", "removeOutLink", "prototype", "isLikePoint", "14836WJzXlk", "93190fASjlq", "7893PAvZbT", "35dVursa", "132LDfxOK", "47076tebRQW", "795848YJgFZL", "83347qXXbAL", "className", "56480NiQhab"];
  return (Ia = function() {
    return s;
  })();
}
function pr(s, t) {
  var e = Ia();
  return (pr = function(n, r) {
    return e[n -= 117];
  })(s, t);
}
class Ch extends j {
  constructor(t, e, n, r, i) {
    super(t, e, n, r, i);
  }
  clearPath() {
    var t = is;
    const e = this.path.anchorProxyList;
    for (let n = 1; n < e.length - 1; n++) {
      let r = e[n];
      r.isDisplayObjectHost() && r.host[t(136)](this);
    }
    e[t(133)] = 0;
  }
  [is(135)](t) {
    if (t.length < 2)
      throw new Error("path length is less than 2");
    this.clearPath();
    let e = t.map((n) => {
      var r = pr;
      if (n instanceof N)
        return n;
      if (n instanceof C)
        return n.getAnchor(ne.center);
      if (A[r(118)](n)) {
        let i = n;
        return new N(new pt(i.x, i.y));
      }
      throw new Error("unknow target type:" + n);
    });
    super._setProxies(e), this._matrixDirty = !0;
  }
}
function xa() {
  const s = ["85428lIRIUQ", "#61649f", "#FED71A", "803124TZDnuX", "4779580eezFcr", "#681752", "#5e5314", "1470842Tfzgod", "#FA7E23", "5023374DzksAD", "1232IyByJn", "#7e2065", "5BqMIUq", "336124tKrDvj", "790680StzwOQ", "#0f1423", "#C02c38"];
  return (xa = function() {
    return s;
  })();
}
((s, t, e, n) => {
  for (var r, i = n > 1 ? void 0 : n ? fc(t, e) : t, o = s.length - 1; o >= 0; o--)
    (r = s[o]) && (i = (n ? r(t, e, i) : r(i)) || i);
  n && i && dc(t, e, i);
})([p("PathLink")], Ch[is(117)], is(127), 2);
const Oe = ba;
function ba(s, t) {
  const e = xa();
  return (ba = function(n, r) {
    return e[n -= 438];
  })(s, t);
}
(function() {
  const s = ba, t = xa();
  for (; ; )
    try {
      if (-parseInt(s(446)) / 1 + -parseInt(s(440)) / 2 + -parseInt(s(447)) / 3 + -parseInt(s(454)) / 4 * (-parseInt(s(445)) / 5) + -parseInt(s(442)) / 6 + parseInt(s(453)) / 7 + parseInt(s(443)) / 8 * (parseInt(s(450)) / 9) === 599061)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const Za = ["#475164", "#2d2e36", Oe(441), "#FF9900", Oe(452), "#2bae85", "#248067", "#12A182", Oe(439), "#1ba784", Oe(448), "#4E7ca1", "#2474b5", "#2775B6", "#346c9c", Oe(451), "#C06f98", Oe(444), Oe(438), "#EE3f4d", Oe(449)];
function gc() {
  let s = Math.random() * Za.length | 0;
  return Za[s];
}
const $ = fs;
(function() {
  const s = fs, t = wa();
  for (; ; )
    try {
      if (parseInt(s(275)) / 1 * (-parseInt(s(279)) / 2) + parseInt(s(251)) / 3 * (parseInt(s(284)) / 4) + parseInt(s(276)) / 5 + -parseInt(s(246)) / 6 * (-parseInt(s(262)) / 7) + -parseInt(s(249)) / 8 + parseInt(s(263)) / 9 * (parseInt(s(282)) / 10) + -parseInt(s(269)) / 11 * (parseInt(s(274)) / 12) === 634436)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var yc = Object.defineProperty, mc = Object.getOwnPropertyDescriptor, cn = (s, t, e, n) => {
  const r = fs;
  for (var i, o = n > 1 ? void 0 : n ? mc(t, e) : t, a = s[r(261)] - 1; a >= 0; a--)
    (i = s[a]) && (o = (n ? i(t, e, o) : i(o)) || o);
  return n && o && yc(t, e, o), o;
};
function fs(s, t) {
  const e = wa();
  return (fs = function(n, r) {
    return e[n -= 246];
  })(s, t);
}
class be extends j {
  constructor(t, e, n, r, i) {
    super(t, e, n, r, i), this.absorb = K.AutoFoldLinkAbsorb;
  }
  getSegmentCount() {
    return 5;
  }
  getCtrlPoints() {
    const t = fs;
    let e = A.mergeClosestPoints(this.points).length;
    return e < 4 ? [q[t(280)], q.end] : e == 4 || e == 5 ? [q[t(280)], q.end, q.fold1, q[t(250)]] : [q.begin, q[t(267)], q[t(264)], q.fold2, q.middle];
  }
  [$(277)](t) {
    this[$(268)] = t, this._matrixDirty = !0;
  }
  setEndOffsetGap(t) {
    this.endOffsetGap = t, this._matrixDirty = !0;
  }
  _calcFold1(t, e) {
    let n = this.beginOffsetGap, r = this._calcFold1Dir(t, e), i = { x: t.x + r[0] * n, y: t.y + r[1] * n }, o = this.fold1Offset;
    return o && (i.x += o.x, i.y += o.y), i;
  }
  _calcFold2(t, e) {
    const n = $;
    let r = this[n(273)], i = this._calcFold2Dir(t, e), o = { x: e.x + i[0] * r, y: e.y + i[1] * r }, a = this[n(247)];
    return a && (o.x += a.x, o.y += a.y), o;
  }
  [$(270)](t, e) {
    let n = th(this.begin);
    return n[0] == 0 && n[1] == 0 && (n = B.normalize([], [e.x - t.x, 0])), n;
  }
  _calcFold2Dir(t, e) {
    let n = th(this[$(267)]);
    return n[0] == 0 && n[1] == 0 && (n = B.normalize([], [t.x - e.x, 0])), n;
  }
  [$(272)]() {
    const t = $, e = this[t(265)]();
    let n = e[0], r = e[1];
    const i = this.absorb;
    let o = this._calcFold1Dir(n, r);
    if (o[0] == 0 && Math.abs(n.x - r.x) < i) {
      let g = 0.5 * (n.x + r.x);
      n.x = g, r.x = g;
    }
    if (o[1] == 0 && Math.abs(n.y - r.y) < i) {
      let g = 0.5 * (n.y + r.y);
      n.y = g, r.y = g;
    }
    let a = this._calcFold1(n, r), h = this._calcFold2(n, r);
    const l = function(g, y, I, x, m) {
      const w = $;
      let _ = g._calcFold1Dir(y, I), P = g._calcFold2Dir(y, I);
      const v = B[w(257)](_, P);
      if (v > 0) {
        const W = Or(x, m, _, P);
        return [W, W];
      }
      if (v < 0) {
        const W = A[w(252)](x, m);
        return [Or(x, W, _, _), Or(m, W, P, P)];
      }
      const D = Ut.getLineIntersectPoint(y, x, I, m, !0);
      return D == null ? Math.abs(y.x - x.x) < 1e-7 && Math.abs(y.y - x.y) < 1e-7 ? [y, x] : Math.abs(I.x - m.x) < 1e-7 && Math.abs(I.y - m.y) < 1e-7 ? [I, m] : [y, I] : [D, D];
    }(this, n, r, a, h);
    let c = l[0], u = l[1];
    {
      if (A.looksSame(c, u, 0.5) == 0) {
        const y = Math.abs(A.getAngle(c.x, c.y, u.x, u.y)).toFixed(6);
        this._preAngle != null && this._preAngle != y && (this.centerOffset = null), this._preAngle = y;
      }
      let g = this.centerOffset;
      g && (c.x += g.x, c.y += g.y, u.x += g.x, u.y += g.y);
    }
    let f = this._state.points;
    return f.length = 0, f[t(248)](n, a, c, u, h, r), f;
  }
  _afterUpdateMatrix() {
    const t = $;
    super[t(260)](), this._needCalcOffset() && (this.points = this[t(272)]());
  }
  setFold1Offset(t, e) {
    let n = this.fold1Offset;
    n == null && (n = { x: 0, y: 0 }, this.fold1Offset = n), Ut.isHorizontal(this.getK(0.5, 0)) ? (n.y = 0, e = 0) : (n.x = 0, t = 0), n.x += t, n.y += e, this._matrixDirty = !0;
  }
  setFold2Offset(t, e) {
    const n = $;
    let r = this.fold2Offset;
    r == null && (r = { x: 0, y: 0 }, this[n(247)] = r), Ut.isHorizontal(this.getK(0.5, 4)) ? (r.y = 0, e = 0) : (r.x = 0, t = 0), r.x += t, r.y += e, this._matrixDirty = !0;
  }
  setCenterOffset(t, e) {
    const n = $;
    let r = this.centerOffset;
    r == null && (r = { x: 0, y: 0 }, this[n(259)] = r), Ut.isHorizontal(this[n(278)](0.5, 2)) ? (r.x = 0, t = 0) : (r.y = 0, e = 0), r.x += t, r.y += e, this[n(256)] = !0;
  }
  resetOffset() {
    const t = $;
    this.centerOffset = void 0, this[t(283)] = null, this.fold2Offset = null, this[t(256)] = !0;
  }
}
function wa() {
  const s = ["abs", "host", "sign", "_matrixDirty", "dot", "_middleIndex", "centerOffset", "_afterUpdateMatrix", "length", "14AVwSNj", "9jQRndH", "fold1", "_calcAZ", "AutoFoldLink", "end", "beginOffsetGap", "11buKYqT", "_calcFold1Dir", "center", "_updatePoints", "endOffsetGap", "18043812QujnzZ", "42gevWJW", "6279155UbYcBO", "setBeginOffsetGap", "getK", "41826HGNVlL", "begin", "points", "11677330NKzYwd", "fold1Offset", "8FGAoOS", "normalize", "2900214iMspPh", "fold2Offset", "push", "8524840LVxUdO", "fold2", "1037604XrNpWr", "middle"];
  return (wa = function() {
    return s;
  })();
}
function $a(s, t) {
  return Math.abs(t[0]) > Math.abs(t[1]) ? s.x * Math.sign(t[0]) : s.y * Math.sign(t[1]);
}
function Or(s, t, e, n) {
  let r = $a(s, e), i = $a(t, n), o = e[0] != 0;
  return r > i ? o ? { x: s.x, y: t.y } : { x: t.x, y: s.y } : o ? { x: t.x, y: s.y } : { x: s.x, y: t.y };
}
function th(s, t, e) {
  const n = $;
  let r = s.anchor, i = s.host, o = [0, 0];
  if (r instanceof De)
    o = r.getNormal();
  else if (r instanceof mt)
    o = r.getNormal();
  else if (r instanceof Vt) {
    let a = r.segIndex, h = r.t, l = i.getLocalPoint(h, a);
    if (i instanceof C) {
      let c = i._positionToLocalPoint(ne[n(271)]), u = l.x - c.x, f = l.y - c.y;
      o = Math.abs(u) > Math[n(253)](f) ? [Math[n(255)](u), 0] : [0, Math.sign(f)];
    } else if (i instanceof j) {
      let c = i[n(281)][a], u = i.points[a + 1];
      o = B[n(285)]([], [u.x - c.x, u.y - c.y]), o = [-o[1], o[0]];
    }
  }
  return s[n(254)] && s[n(254)].scaleX < 0 && (o[0] = -o[0]), s[n(254)] && s[n(254)].scaleY < 0 && (o[1] = -o[1]), o = Math.abs(o[0]) > Math[n(253)](o[1]) ? [Math.sign(o[0]), 0] : [0, Math.sign(o[1])], o;
}
cn([p(kt[$(266)])], be.prototype, "className", 2), cn([p(new yh())], be.prototype, "_shape", 2), cn([p(15)], be.prototype, "beginOffsetGap", 2), cn([p([2, 0.5])], be.prototype, $(258), 2), cn([p(15)], be.prototype, $(273), 2), cn([p(j.prototype._serializers.concat(["beginOffsetGap", $(273), kt[$(283)], kt[$(247)], kt[$(259)]]))], be.prototype, "_serializers", 2);
const F = dr;
(function() {
  const s = dr, t = va();
  for (; ; )
    try {
      if (parseInt(s(248)) / 1 + parseInt(s(243)) / 2 + parseInt(s(259)) / 3 * (-parseInt(s(263)) / 4) + parseInt(s(238)) / 5 + -parseInt(s(268)) / 6 * (parseInt(s(244)) / 7) + parseInt(s(241)) / 8 * (-parseInt(s(256)) / 9) + parseInt(s(262)) / 10 * (parseInt(s(260)) / 11) === 290462)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
var Ic = Object[F(240)], xc = Object[F(252)], eh = (s, t, e, n) => {
  const r = F;
  for (var i, o = n > 1 ? void 0 : n ? xc(t, e) : t, a = s[r(274)] - 1; a >= 0; a--)
    (i = s[a]) && (o = (n ? i(t, e, o) : i(o)) || o);
  return n && o && Ic(t, e, o), o;
};
function dr(s, t) {
  const e = va();
  return (dr = function(n, r) {
    return e[n -= 237];
  })(s, t);
}
class Qr extends ds {
  constructor(t, e = 0, n = 0, r = 1, i = 1) {
    const o = F;
    super(t, e, n, r, i), this[o(245)] = 0, this._frameCount = 1, this[o(251)] = 1, this.totalColumns = 1, this[o(237)] = 1, this._frameHeight = 1, this._duration = 1e3, this._currentFrame = 0, this[o(261)] = !0;
  }
  [F(250)](t) {
    const e = F;
    t[e(271)] != null && (this[e(271)] = t.frameIndex), t[e(249)] != null && (this.frameCount = t[e(249)]), t.duration != null && (this.duration = t.duration), this._currentFrame = this[e(271)], this.update();
  }
  [F(266)](t, e) {
    const n = F;
    return this._frameIndex = e.frameIndex || 0, this._frameCount = e[n(249)] || 1, this.totalRows = e[n(251)] || 1, this[n(246)] = e.totalColumns || 1, e[n(257)] != null && (this._duration = e.duration), this._currentFrame = this._frameIndex, this[n(239)](t, !0);
  }
  setImage(t, e) {
    let n = this;
    return super.setImage(t, e).then((r) => {
      const i = dr;
      return r instanceof HTMLImageElement && (n._frameWidth = r.width / this.totalColumns, n._frameHeight = r.height / this[i(251)], this._autoSize && n.resizeToFrame(), n.play()), r;
    });
  }
  [F(258)](t, e) {
    const n = F;
    let r = this._drawContentDesc.shapeSize, i = Math.floor(this[n(269)] / this.totalColumns), o = this._currentFrame % this.totalColumns * this[n(237)], a = i * this._frameHeight, h = 0.5 * -r.width, l = 0.5 * -r.height;
    t.drawImage(e, o, a, this._frameWidth, this._frameHeight, h, l, r.width, r.height);
  }
  [F(254)]() {
    const t = F;
    return this[t(247)] != null && this.imageObject[t(242)] != this[t(237)] && this.imageObject[t(276)] != this._frameHeight && this.resize(this._frameWidth, this._frameHeight), this;
  }
  [F(253)]() {
    const t = F;
    let e = this;
    return this[t(265)] <= 1 || (this.pause(), this._timer = setInterval(() => {
      const n = t;
      e._frameCount <= 1 || e[n(270)] <= 0 || (e._currentFrame++, e[n(269)] >= e[n(245)] + e._frameCount && (e[n(269)] = e._frameIndex), e.update());
    }, this._duration / this[t(265)]), e.update()), this;
  }
  pause() {
    return clearInterval(this[F(273)]), this;
  }
  update() {
    super[F(275)](), this._autoSize && this.resizeToFrame();
  }
  set frameIndex(t) {
    t !== this[F(245)] && (this._frameIndex = Math.max(0, t), this._currentFrame = this._frameIndex, this.update());
  }
  get frameIndex() {
    return this[F(245)];
  }
  set frameCount(t) {
    t !== this._frameCount && (this._frameCount = Math.max(1, t), this._currentFrame = this._frameIndex, this.update());
  }
  get frameCount() {
    return this._frameCount;
  }
  set duration(t) {
    const e = F;
    t !== this._duration && (this._duration = t, this[e(275)]());
  }
  get duration() {
    return this._duration;
  }
  set [F(267)](t) {
    this._autoSize = t, t && this.resizeToFrame();
  }
  get autoSize() {
    return this._autoSize;
  }
  destroy() {
    super[F(272)](), this.pause();
  }
}
function va() {
  const s = ["_drawImage", "111IuWQhQ", "1771RqIuKY", "_autoSize", "6140hhpdUO", "45728BdDuNu", "prototype", "_frameCount", "setSprite", "autoSize", "816awnBvH", "_currentFrame", "_duration", "frameIndex", "destroy", "_timer", "length", "update", "height", "_frameWidth", "2035680dkLBaa", "setImage", "defineProperty", "24Gfouum", "width", "899480LxAEJh", "7994NHEXwe", "_frameIndex", "totalColumns", "imageObject", "486997wLuYLr", "frameCount", "changeSprite", "totalRows", "getOwnPropertyDescriptor", "play", "resizeToFrame", "concat", "1721907kDSJjz", "duration"];
  return (va = function() {
    return s;
  })();
}
eh([p("SpriteNode")], Qr[F(264)], "className", 2), eh([p(ds.prototype._serializers[F(255)](["frameIndex", "frameCount", F(251), F(246), "duration", F(267)]))], Qr.prototype, "_serializers", 2);
const M = _a;
(function() {
  const s = _a, t = Sa();
  for (; ; )
    try {
      if (-parseInt(s(384)) / 1 * (-parseInt(s(359)) / 2) + -parseInt(s(378)) / 3 * (-parseInt(s(369)) / 4) + parseInt(s(379)) / 5 * (parseInt(s(376)) / 6) + parseInt(s(383)) / 7 * (-parseInt(s(362)) / 8) + -parseInt(s(382)) / 9 * (-parseInt(s(374)) / 10) + -parseInt(s(394)) / 11 + parseInt(s(364)) / 12 * (parseInt(s(373)) / 13) === 530523)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})(), [new mt(Kt.lt, U.ADJUST), new mt(Kt.rt, U[M(392)]), new mt(Kt.lb, U[M(392)]), new mt(Kt.rb, U[M(392)]), new mt(Kt.lm, U.CONNECT_EDIT), new mt(Kt.ct, U.CONNECT_EDIT), new mt(Kt.rm, U.CONNECT_EDIT), new mt(Kt.cb, U.CONNECT_EDIT), new mt(Kt[M(352)], U.ADJUST), new ts(Kt.auto)].forEach((s) => {
  rn.DefaultAnchors.set(s.name, s);
}), z[M(357)](tt[M(387)], (s) => s.points[0]), z[M(357)](tt[M(368)], (s) => {
  const t = M;
  return s.points[s.points[t(381)] - 1];
}), z._sysRegFunction(tt.LinkCenter, (s) => s.getPoint(0.5));
let gs = new bt(tt.LinkBegin, U.CONNECT_EDIT | U.ADJUST);
function _a(s, t) {
  const e = Sa();
  return (_a = function(n, r) {
    return e[n -= 350];
  })(s, t);
}
gs.pointermoveHandler = function(s, t, e) {
  const n = M;
  t.inputSystem.isPointerDown && (s instanceof be && s.resetOffset(), s[n(370)]({ x: e.x, y: e.y }), s.updateMatrix());
};
let os = new bt(tt.LinkEnd, U[M(360)] | U.ADJUST);
os.pointermoveHandler = function(s, t, e) {
  const n = M;
  t[n(393)][n(367)] && (s instanceof be && s.resetOffset(), s.setEnd({ x: e.x, y: e.y }), s[n(372)]());
}, [gs, os, new bt(tt.LinkCenter, U.CONNECT)][M(375)]((s) => {
  An.DefaultAnchors.set(s.name, s);
});
{
  z._sysRegFunction(tt.AutoFoldLinkCenter, (n) => A.middle(n.points[2], n.points[3])), z._sysRegFunction(tt[M(354)], (n) => n.points[1]), z._sysRegFunction(tt.AutoFoldLinkFold2, (n) => n.points[4]);
  let s = new bt(tt[M(354)], U.ADJUST);
  s.pointermoveHandler = function(n, r, i) {
    const o = M;
    if (r.inputSystem.isPointerDown) {
      let c = N.calcPointByAnchor(n, this);
      const u = i.x - c.x, f = i.y - c.y;
      return n.setFold1Offset(u, f), void n.updateMatrix();
    }
    let a = n.points[0], h = n.points[1], l = null;
    l = Ut[o(377)](n.getK(0.5, 0)) ? h.x > a.x ? at.w_resize : at[o(363)] : h.y > a.y ? at[o(358)] : at.n_resize, r[o(388)](l);
  };
  let t = new bt(tt.AutoFoldLinkFold2, U[M(392)]);
  t[M(356)] = function(n, r, i) {
    const o = M;
    if (r.inputSystem.isPointerDown) {
      let u = N.calcPointByAnchor(n, this);
      const f = i.x - u.x, g = i.y - u.y;
      return n[o(355)](f, g), void n[o(372)]();
    }
    const a = Ut.isHorizontal(n[o(371)](0.5, 4));
    let h = n.points[4], l = n.points[5], c = null;
    c = a ? h.x > l.x ? at[o(350)] : at[o(363)] : h.y > l.y ? at.s_resize : at.n_resize, r[o(388)](c);
  };
  let e = new bt(tt.AutoFoldLinkCenter, U.ADJUST);
  e.pointermoveHandler = function(n, r, i) {
    const o = M;
    if (r[o(393)][o(367)]) {
      let h = N.calcPointByAnchor(n, this);
      const l = i.x - h.x, c = i.y - h.y;
      return n[o(380)](l, c), void n.updateMatrix();
    }
    let a = null;
    a = Ut.isHorizontal(n[o(371)](0.5, 2)) ? at.s_resize : at.e_resize, r.setCursor(a);
  }, [gs, os, new Vt(q[M(351)], 1, 1), new Vt(q.mid2, 1, 2), s, t, e][M(375)]((n) => {
    yh[M(353)].set(n.name, n);
  });
}
{
  z[M(357)](tt.QuadBezierLinkCtrlPoint, (t) => {
    const e = M;
    if (t[e(391)] != null)
      return t[e(391)];
    let n = t.getPoints();
    return t[e(385)](n[0].x, n[0].y, n[2].x, n[2].y);
  });
  let s = new bt(tt.QuadBezierLinkCtrlPoint, U.ADJUST);
  s.pointermoveHandler = function(t, e, n) {
    const r = M;
    e[r(393)].isPointerDown && (t.ctrlPoint == null ? t[r(361)](N.calcPointByAnchor(t, this)) : (t[r(391)].x += n.x - t[r(391)].x, t.ctrlPoint.y += n.y - t[r(391)].y, t.setCtrlPoint(t.ctrlPoint)));
  }, [gs, os, s, new bt(tt.LinkCenter, U.CONNECT)][M(375)]((t) => {
    const e = M;
    zs[e(353)][e(395)](t.name, t);
  });
}
function Sa() {
  const s = ["ADJUST", "inputSystem", "10770837zSPnMW", "set", "w_resize", "mid1", "center", "DefaultAnchors", "AutoFoldLinkFold1", "setFold2Offset", "pointermoveHandler", "_sysRegFunction", "s_resize", "29586cUfshN", "CONNECT_EDIT", "setCtrlPoint", "39344HuUMmU", "e_resize", "16224792LYPBOX", "ctrlPoint2", "BezierLinkCtrlPoint1", "isPointerDown", "LinkEnd", "40988vmnfUZ", "setBegin", "getK", "updateMatrix", "13oqLkMW", "40wOVNXr", "forEach", "250218uBAQxa", "isHorizontal", "6wsXwWT", "25MleKQD", "setCenterOffset", "length", "1077930lQnZmr", "973PlvluU", "9CkXvRy", "getCtrlPoint", "ctrlPoint1", "LinkBegin", "setCursor", "name", "setCtrlPoint1", "ctrlPoint"];
  return (Sa = function() {
    return s;
  })();
}
{
  z[M(357)](tt[M(366)], (e) => e.ctrlPoint1 != null ? e.ctrlPoint1 : e.getPoints()[1]), z._sysRegFunction(tt.BezierLinkCtrlPoint2, (e) => e.ctrlPoint2 != null ? e.ctrlPoint2 : e.getPoints()[3]);
  let s = new bt(tt.BezierLinkCtrlPoint1, U[M(392)]);
  s[M(356)] = function(e, n, r) {
    const i = M;
    n.inputSystem.isPointerDown && (e.ctrlPoint1 == null ? e[i(390)](N.calcPointByAnchor(e, this)) : (e.ctrlPoint1.x += r.x - e[i(386)].x, e[i(386)].y += r.y - e.ctrlPoint1.y, e.setCtrlPoint1(e.ctrlPoint1)));
  };
  let t = new bt(tt.BezierLinkCtrlPoint2, U.ADJUST);
  t.pointermoveHandler = function(e, n, r) {
    const i = M;
    n.inputSystem.isPointerDown && (e.ctrlPoint2 == null ? e.setCtrlPoint2(N.calcPointByAnchor(e, this)) : (e.ctrlPoint2.x += r.x - e.ctrlPoint2.x, e.ctrlPoint2.y += r.y - e.ctrlPoint2.y, e.setCtrlPoint2(e[i(365)])));
  }, [gs, os, s, t].forEach((e) => {
    const n = M;
    Bs.DefaultAnchors[n(395)](e[n(389)], e);
  });
}
function ka() {
  var s = ["37xTxJan", "7012FEppOW", "2108790DvpDKv", "448BbTMmU", "4607760LKMJlF", "8644OjWYcf", "43236CfUYGo", "676356IXDWOy", "26256CaVAMm", "415ROVtHt"];
  return (ka = function() {
    return s;
  })();
}
function Ah(s, t) {
  var e = ka();
  return (Ah = function(n, r) {
    return e[n -= 255];
  })(s, t);
}
(function() {
  for (var s = Ah, t = ka(); ; )
    try {
      if (parseInt(s(260)) / 1 * (parseInt(s(261)) / 2) + parseInt(s(257)) / 3 + parseInt(s(255)) / 4 * (-parseInt(s(259)) / 5) + -parseInt(s(256)) / 6 + parseInt(s(263)) / 7 * (parseInt(s(258)) / 8) + parseInt(s(262)) / 9 + -parseInt(s(264)) / 10 === 152187)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})();
const Tr = Object.freeze(Object.defineProperty({ __proto__: null, AENode: ss, Anchor: xt, AnchorProxy: N, AnchorUsageType: U, Animation: dh, ArcLink: qn, ArrowShape: ji, Assets: hs, AssetsClass: ph, AutoAnchor: ts, AutoFoldLink: be, BezierLink: As, Camera: Ph, CameraEvent: Lh, CanvasNode: Eh, Collection: At, ConnectToNodePosition: Kt, Cursor: at, Debug: Kn, DefaultDarkTheme: Ur, DefaultLightTheme: Zn, DiamondShape: Wi, Direction: Dt, DomUtil: ze, Edge: Hr, EllipseNode: Jr, EllipseShape: zi, EventBase: $e, EventTarget: _e, FixedPointAnchor: pt, FontInfo: He, FontUtil: Cr, ForceDirectLayout: hc, FunctionAnchor: bt, FunctionName: tt, GeomUtils: ht, Graph: es, GraphSystem: Tn, HandlerLayer: or, HtmlNode: qr, ImageNode: ds, ImageUtil: Qn, InputEvent: kl, InputSystem: xh, Intersect: sn, JTType: Mh, Keyboard: bh, LShapeLink: Jn, Layer: ut, Layout: Os, LayoutSystem: Sh, LinearGradient: Wn, Link: j, LinkConst: kt, LinkPosition: q, NDCAnchor: De, NE: lt, NEHelper: ps, Node: C, NodeHelper: he, NodePositionAnchor: mt, OBB: ce, ObjectName: Dh, Observable: Ne, Path: bl, PathLink: Ch, Point: A, PolygonShape: re, QuadBezierLink: Cs, RadialGradient: Rn, RectPosition: ne, RectPositionNormalized: Ds, RectPositionUnitNormals: ti, RectShape: Qs, Rectangle: O, RegShape: lh, RegSystem: z, ResourceSystem: dt, ResourceSystemBase: sh, SegmentAnchor: Vt, SelectedGroup: Th, SerializerSystem: Ns, Shape: rn, ShapeBuilder: Je, ShapeNode: Es, SpriteNode: Qr, Stage: ar, StageEvent: Yn, StageMode: Ht, Style: Jt, StylePattern: ye, StyleSystem: kh, TextAlign: Ot, TextBaseline: Tt, TextNode: en, TextPosition: Bt, Theme: Dn, ThemeContent: Ro, TipNode: Vn, TipShape: Fi, Transform: It, TriangleShape: Bi, VERSION: Rs, Vertext: xn, VideoNode: Un, ZShapeLink: Gn, _V: Nh, convertToAnchorProxy: Fr, copyKeyboardEvent: Xr, copyMouseEvent: Sl, distance: pn, geom: Ut, newtonsMethod: Pi, pointIntersectNode: Jh, randomColor: gc, setProto: p, util: ve, vec2: B }, Symbol.toStringTag, { value: "Module" })), wt = La;
function La(s, t) {
  const e = Pa();
  return (La = function(n, r) {
    return e[n -= 163];
  })(s, t);
}
function Pa() {
  const s = ["776919mITPYI", "FixedPointAnchor", "158706ecxGaA", "3368631IUFIEM", "LShapeLink", "249620Xyxyfc", "Link", "forEach", "Node", "className", "error", "ArcLink", "AutoFoldLink", "Style", "SpriteNode", "195TkGbxC", "CanvasNode", "RegSystem", "30526364PTqhbS", "PathLink", "325776LxWycm", "prototype", "VideoNode", "4vsiATt", "149406FKtZzN", "210SDBrCa", "BezierLink", ".prototype.className is null:", "8NPCUWH"];
  return (Pa = function() {
    return s;
  })();
}
(function() {
  const s = La, t = Pa();
  for (; ; )
    try {
      if (parseInt(s(175)) / 1 + parseInt(s(164)) / 2 * (-parseInt(s(170)) / 3) + parseInt(s(190)) / 4 + -parseInt(s(185)) / 5 * (parseInt(s(165)) / 6) + -parseInt(s(173)) / 7 * (parseInt(s(169)) / 8) + parseInt(s(172)) / 9 * (-parseInt(s(166)) / 10) + parseInt(s(188)) / 11 === 765556)
        break;
      t.push(t.shift());
    } catch {
      t.push(t.shift());
    }
})(), [wt(183), "Layer", wt(178), "TextNode", "ImageNode", wt(163), wt(186), "ShapeNode", "HtmlNode", "EllipseNode", "TipNode", wt(184), wt(176), wt(174), "ZShapeLink", "QuadBezierLink", wt(181), wt(167), wt(189), wt(182), "NDCAnchor", wt(171), "AutoAnchor", "SegmentAnchor", "NodePositionAnchor", "FunctionAnchor"][wt(177)]((s) => {
  const t = wt;
  Tr[s] == null && console[t(180)]("class not exist name:" + s);
  let e = Tr[s];
  e[t(191)][t(179)] == null && console.error(t(168) + s), Tr[t(187)]._sysRegClass(e);
});
export {
  ss as AENode,
  xt as Anchor,
  N as AnchorProxy,
  U as AnchorUsageType,
  dh as Animation,
  qn as ArcLink,
  ji as ArrowShape,
  hs as Assets,
  ph as AssetsClass,
  ts as AutoAnchor,
  be as AutoFoldLink,
  As as BezierLink,
  Ph as Camera,
  Lh as CameraEvent,
  Eh as CanvasNode,
  At as Collection,
  Kt as ConnectToNodePosition,
  at as Cursor,
  Kn as Debug,
  Ur as DefaultDarkTheme,
  Zn as DefaultLightTheme,
  Wi as DiamondShape,
  Dt as Direction,
  ze as DomUtil,
  Hr as Edge,
  Jr as EllipseNode,
  zi as EllipseShape,
  $e as EventBase,
  _e as EventTarget,
  pt as FixedPointAnchor,
  He as FontInfo,
  Cr as FontUtil,
  hc as ForceDirectLayout,
  bt as FunctionAnchor,
  tt as FunctionName,
  ht as GeomUtils,
  es as Graph,
  Tn as GraphSystem,
  or as HandlerLayer,
  qr as HtmlNode,
  ds as ImageNode,
  Qn as ImageUtil,
  kl as InputEvent,
  xh as InputSystem,
  sn as Intersect,
  Mh as JTType,
  bh as Keyboard,
  Jn as LShapeLink,
  ut as Layer,
  Os as Layout,
  Sh as LayoutSystem,
  Wn as LinearGradient,
  j as Link,
  kt as LinkConst,
  q as LinkPosition,
  De as NDCAnchor,
  lt as NE,
  ps as NEHelper,
  C as Node,
  he as NodeHelper,
  mt as NodePositionAnchor,
  ce as OBB,
  Dh as ObjectName,
  Ne as Observable,
  bl as Path,
  Ch as PathLink,
  A as Point,
  re as PolygonShape,
  Cs as QuadBezierLink,
  Rn as RadialGradient,
  ne as RectPosition,
  Ds as RectPositionNormalized,
  ti as RectPositionUnitNormals,
  Qs as RectShape,
  O as Rectangle,
  lh as RegShape,
  z as RegSystem,
  dt as ResourceSystem,
  sh as ResourceSystemBase,
  Vt as SegmentAnchor,
  Th as SelectedGroup,
  Ns as SerializerSystem,
  rn as Shape,
  Je as ShapeBuilder,
  Es as ShapeNode,
  Qr as SpriteNode,
  ar as Stage,
  Yn as StageEvent,
  Ht as StageMode,
  Jt as Style,
  ye as StylePattern,
  kh as StyleSystem,
  Ot as TextAlign,
  Tt as TextBaseline,
  en as TextNode,
  Bt as TextPosition,
  Dn as Theme,
  Ro as ThemeContent,
  Vn as TipNode,
  Fi as TipShape,
  It as Transform,
  Bi as TriangleShape,
  Rs as VERSION,
  xn as Vertext,
  Un as VideoNode,
  Gn as ZShapeLink,
  Nh as _V,
  Fr as convertToAnchorProxy,
  Xr as copyKeyboardEvent,
  Sl as copyMouseEvent,
  pn as distance,
  Ut as geom,
  Pi as newtonsMethod,
  Jh as pointIntersectNode,
  gc as randomColor,
  p as setProto,
  ve as util,
  B as vec2
};
